Class: GitRepository Private
Overview
This class is part of a private API. This class may only be used in the Homebrew/brew repository. Third parties should avoid using this class if possible, as it may be removed or changed without warning.
Given a Pathname, provides methods for querying Git repository information.
Instance Attribute Summary collapse
-
#pathname ⇒ Pathname
readonly
private
Instance Method Summary collapse
-
#branch_name(safe: false) ⇒ String?
private
Gets the name of the currently checked-out branch, or HEAD if the repository is in a detached HEAD state.
-
#commit_message(commit = "HEAD", safe: false) ⇒ String?
private
Gets the full commit message of the specified commit, or of the HEAD commit if unspecified.
-
#default_origin_branch? ⇒ Boolean?
private
Returns true if the repository’s current branch matches the default origin branch.
-
#git_repo? ⇒ Boolean
private
-
#head_ref(safe: false) ⇒ String?
private
Gets the full commit hash of the HEAD commit.
-
#initialize(pathname) ⇒ void
constructor
private
-
#last_commit_date ⇒ String?
private
Returns the date of the last commit, in YYYY-MM-DD format.
-
#last_committed ⇒ String?
private
Gets the relative date of the last commit, e.g.
-
#origin_branch_name ⇒ String?
private
Gets the name of the default origin HEAD branch.
-
#origin_has_branch?(branch) ⇒ Boolean
private
Returns true if the given branch exists on origin.
-
#origin_url ⇒ String?
private
Gets the URL of the Git origin remote.
-
#origin_url=(origin) ⇒ Boolean?
private
Sets the URL of the Git origin remote.
-
#rename_branch(old:, new:) ⇒ void
private
Change the name of a local branch.
-
#set_head_origin_auto ⇒ void
private
-
#set_upstream_branch(local:, origin:) ⇒ void
private
Set an upstream branch for a local branch to track.
-
#short_head_ref(length: nil, safe: false) ⇒ String?
private
Gets a short commit hash of the HEAD commit.
-
#to_s ⇒ String
private
Constructor Details
#initialize(pathname) ⇒ void
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
15 16 17 |
# File 'git_repository.rb', line 15 def initialize(pathname) @pathname = pathname end |
Instance Attribute Details
#pathname ⇒ Pathname (readonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
12 13 14 |
# File 'git_repository.rb', line 12 def pathname @pathname end |
Instance Method Details
#branch_name(safe: false) ⇒ String?
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Gets the name of the currently checked-out branch, or HEAD if the repository is in a detached HEAD state.
59 60 61 |
# File 'git_repository.rb', line 59 def branch_name(safe: false) popen_git("rev-parse", "--abbrev-ref", "HEAD", safe: safe) end |
#commit_message(commit = "HEAD", safe: false) ⇒ String?
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Gets the full commit message of the specified commit, or of the HEAD commit if unspecified.
106 107 108 |
# File 'git_repository.rb', line 106 def (commit = "HEAD", safe: false) popen_git("log", "-1", "--pretty=%B", commit, "--", safe: safe, err: :out)&.strip end |
#default_origin_branch? ⇒ Boolean?
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Returns true if the repository’s current branch matches the default origin branch.
83 84 85 |
# File 'git_repository.rb', line 83 def default_origin_branch? origin_branch_name == branch_name end |
#git_repo? ⇒ Boolean
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
20 21 22 |
# File 'git_repository.rb', line 20 def git_repo? pathname.join(".git").exist? end |
#head_ref(safe: false) ⇒ String?
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Gets the full commit hash of the HEAD commit.
40 41 42 |
# File 'git_repository.rb', line 40 def head_ref(safe: false) popen_git("rev-parse", "--verify", "--quiet", "HEAD", safe: safe) end |
#last_commit_date ⇒ String?
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Returns the date of the last commit, in YYYY-MM-DD format.
89 90 91 |
# File 'git_repository.rb', line 89 def last_commit_date popen_git("show", "-s", "--format=%cd", "--date=short", "HEAD") end |
#last_committed ⇒ String?
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Gets the relative date of the last commit, e.g. “1 hour ago”
53 54 55 |
# File 'git_repository.rb', line 53 def last_committed popen_git("show", "-s", "--format=%cr", "HEAD") end |
#origin_branch_name ⇒ String?
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Gets the name of the default origin HEAD branch.
77 78 79 |
# File 'git_repository.rb', line 77 def origin_branch_name popen_git("symbolic-ref", "-q", "--short", "refs/remotes/origin/HEAD")&.split("/")&.last end |
#origin_has_branch?(branch) ⇒ Boolean
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Returns true if the given branch exists on origin
95 96 97 |
# File 'git_repository.rb', line 95 def origin_has_branch?(branch) popen_git("ls-remote", "--heads", "origin", branch).present? end |
#origin_url ⇒ String?
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Gets the URL of the Git origin remote.
26 27 28 |
# File 'git_repository.rb', line 26 def origin_url popen_git("config", "--get", "remote.origin.url") end |
#origin_url=(origin) ⇒ Boolean?
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Sets the URL of the Git origin remote.
32 33 34 35 36 |
# File 'git_repository.rb', line 32 def origin_url=(origin) return if !git_repo? || !Utils::Git.available? safe_system Utils::Git.git, "remote", "set-url", "origin", origin, chdir: pathname end |
#rename_branch(old:, new:) ⇒ void
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
This method returns an undefined value.
Change the name of a local branch
65 66 67 |
# File 'git_repository.rb', line 65 def rename_branch(old:, new:) popen_git("branch", "-m", old, new) end |
#set_head_origin_auto ⇒ void
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
This method returns an undefined value.
100 101 102 |
# File 'git_repository.rb', line 100 def set_head_origin_auto popen_git("remote", "set-head", "origin", "--auto") end |
#set_upstream_branch(local:, origin:) ⇒ void
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
This method returns an undefined value.
Set an upstream branch for a local branch to track
71 72 73 |
# File 'git_repository.rb', line 71 def set_upstream_branch(local:, origin:) popen_git("branch", "-u", "origin/#{origin}", local) end |
#short_head_ref(length: nil, safe: false) ⇒ String?
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
Gets a short commit hash of the HEAD commit.
46 47 48 49 |
# File 'git_repository.rb', line 46 def short_head_ref(length: nil, safe: false) short_arg = length.present? ? "--short=#{length}" : "--short" popen_git("rev-parse", short_arg, "--verify", "--quiet", "HEAD", safe: safe) end |
#to_s ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
111 112 113 |
# File 'git_repository.rb', line 111 def to_s pathname.to_s end |