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.
-
#origin_url=(origin) ⇒ void
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.
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.
58 59 60 61 62 63 64 65 66 67 |
# File 'git_repository.rb', line 58 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.
118 119 120 |
# File 'git_repository.rb', line 118 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.
95 96 97 |
# File 'git_repository.rb', line 95 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.
39 40 41 |
# File 'git_repository.rb', line 39 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.
101 102 103 |
# File 'git_repository.rb', line 101 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"
52 53 54 |
# File 'git_repository.rb', line 52 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.
83 84 85 86 87 88 89 90 91 |
# File 'git_repository.rb', line 83 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
107 108 109 |
# File 'git_repository.rb', line 107 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 |
#origin_url=(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.
Sets the URL of the Git origin remote.
31 32 33 34 35 |
# File 'git_repository.rb', line 31 def origin_url=(origin) return if !git_repository? || !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
71 72 73 |
# File 'git_repository.rb', line 71 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.
112 113 114 |
# File 'git_repository.rb', line 112 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
77 78 79 |
# File 'git_repository.rb', line 77 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.
45 46 47 48 |
# File 'git_repository.rb', line 45 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 |