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
- #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) ⇒ 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.
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.
65 66 67 |
# File 'git_repository.rb', line 65 def branch_name(safe: false) popen_git("rev-parse", "--abbrev-ref", "HEAD", 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.
112 113 114 |
# File 'git_repository.rb', line 112 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.
89 90 91 |
# File 'git_repository.rb', line 89 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.
24 25 26 27 28 |
# File 'git_repository.rb', line 24 def git_repo? # delete this whole function when removing odisabled odeprecated "GitRepository#git_repo?", "GitRepository#git_repository?" git_repository? 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.
46 47 48 |
# File 'git_repository.rb', line 46 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.
95 96 97 |
# File 'git_repository.rb', line 95 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"
59 60 61 |
# File 'git_repository.rb', line 59 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 |
# File 'git_repository.rb', line 83 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
101 102 103 |
# File 'git_repository.rb', line 101 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.
32 33 34 |
# File 'git_repository.rb', line 32 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.
38 39 40 41 42 |
# File 'git_repository.rb', line 38 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.
106 107 108 |
# File 'git_repository.rb', line 106 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.
52 53 54 55 |
# File 'git_repository.rb', line 52 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 |