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_repository? ⇒ 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.
-
#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.
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.
14 15 16 |
# File 'git_repository.rb', line 14 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.
11 12 13 |
# File 'git_repository.rb', line 11 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.
50 51 52 53 54 55 56 57 58 59 |
# File 'git_repository.rb', line 50 def branch_name(safe: false) ref = popen_git("rev-parse", "--symbolic-full-name", "HEAD", safe:) return if ref.blank? return "HEAD" if ref == "HEAD" refs_format = "refs/heads/" return ref.delete_prefix(refs_format) if ref.start_with?(refs_format) raise "Unexpected HEAD ref format: #{ref}" 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.
110 111 112 |
# File 'git_repository.rb', line 110 def (commit = "HEAD", safe: false) popen_git("log", "-1", "--pretty=%B", commit, "--", 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.
87 88 89 |
# File 'git_repository.rb', line 87 def default_origin_branch? origin_branch_name == branch_name end |
#git_repository? ⇒ 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.
19 20 21 |
# File 'git_repository.rb', line 19 def git_repository? 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.
31 32 33 |
# File 'git_repository.rb', line 31 def head_ref(safe: false) popen_git("rev-parse", "--verify", "--quiet", "HEAD", 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.
93 94 95 |
# File 'git_repository.rb', line 93 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"
44 45 46 |
# File 'git_repository.rb', line 44 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.
75 76 77 78 79 80 81 82 83 |
# File 'git_repository.rb', line 75 def origin_branch_name ref = popen_git("symbolic-ref", "-q", "refs/remotes/origin/HEAD") return if ref.blank? refs_format = "refs/remotes/origin/" return ref.delete_prefix(refs_format) if ref.start_with?(refs_format) raise "Unexpected origin/HEAD ref format: #{ref}" 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
99 100 101 |
# File 'git_repository.rb', line 99 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.
25 26 27 |
# File 'git_repository.rb', line 25 def origin_url popen_git("config", "--get", "remote.origin.url") 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
63 64 65 |
# File 'git_repository.rb', line 63 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.
104 105 106 |
# File 'git_repository.rb', line 104 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
69 70 71 |
# File 'git_repository.rb', line 69 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.
37 38 39 40 |
# File 'git_repository.rb', line 37 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:) end |