Class: GitRepository Private

Inherits:
Object show all
Defined in:
git_repository.rb

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.

See Also:

Instance Attribute Summary collapse

Instance Method Summary collapse

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.

Parameters:



15
16
17
# File 'git_repository.rb', line 15

def initialize(pathname)
  @pathname = pathname
end

Instance Attribute Details

#pathnamePathname (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.

Returns:



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.

Parameters:

  • safe (Boolean) (defaults to: false)

Returns:



59
60
61
# File 'git_repository.rb', line 59

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.

Parameters:

  • commit (String) (defaults to: "HEAD")
  • safe (Boolean) (defaults to: false)

Returns:



106
107
108
# File 'git_repository.rb', line 106

def commit_message(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.

Returns:

  • (Boolean, nil)


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.

Returns:

  • (Boolean)


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.

Parameters:

  • safe (Boolean) (defaults to: false)

Returns:



40
41
42
# File 'git_repository.rb', line 40

def head_ref(safe: false)
  popen_git("rev-parse", "--verify", "--quiet", "HEAD", safe:)
end

#last_commit_dateString?

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.

Returns:



89
90
91
# File 'git_repository.rb', line 89

def last_commit_date
  popen_git("show", "-s", "--format=%cd", "--date=short", "HEAD")
end

#last_committedString?

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”

Returns:



53
54
55
# File 'git_repository.rb', line 53

def last_committed
  popen_git("show", "-s", "--format=%cr", "HEAD")
end

#origin_branch_nameString?

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.

Returns:



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

Parameters:

Returns:

  • (Boolean)


95
96
97
# File 'git_repository.rb', line 95

def origin_has_branch?(branch)
  popen_git("ls-remote", "--heads", "origin", branch).present?
end

#origin_urlString?

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.

Returns:



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.

Parameters:

Returns:

  • (Boolean, nil)


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

Parameters:



65
66
67
# File 'git_repository.rb', line 65

def rename_branch(old:, new:)
  popen_git("branch", "-m", old, new)
end

#set_head_origin_autovoid

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

Parameters:



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.

Parameters:

  • length (Integer, nil) (defaults to: nil)
  • safe (Boolean) (defaults to: false)

Returns:



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:)
end

#to_sString

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:



111
112
113
# File 'git_repository.rb', line 111

def to_s
  pathname.to_s
end