Class: Git::Branches
Overview
object that holds all the available branches
Instance Method Summary collapse
-
#[](branch_name) ⇒ Git::Branch
Returns the target branch.
- #each(&block) ⇒ Object
-
#initialize(base) ⇒ Branches
constructor
A new instance of Branches.
- #local ⇒ Object
- #remote ⇒ Object
-
#size ⇒ Object
array like methods.
- #to_s ⇒ Object
Constructor Details
#initialize(base) ⇒ Branches
Returns a new instance of Branches.
8 9 10 11 12 13 14 15 16 |
# File 'lib/git/branches.rb', line 8 def initialize(base) @branches = {} @base = base @base.lib.branches_all.each do |b| @branches[b[0]] = Git::Branch.new(@base, b[0]) end end |
Instance Method Details
#[](branch_name) ⇒ Git::Branch
Returns the target branch
Example:
Given (git branch -a):
master
remotes/working/master
g.branches['master'].full #=> 'master'
g.branches['working/master'].full => 'remotes/working/master'
g.branches['remotes/working/master'].full => 'remotes/working/master'
49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/git/branches.rb', line 49 def [](branch_name) @branches.values.inject(@branches) do |branches, branch| branches[branch.full] ||= branch # This is how Git (version 1.7.9.5) works. # Lets you ignore the 'remotes' if its at the beginning of the branch full name (even if is not a real remote branch). branches[branch.full.sub('remotes/', '')] ||= branch if branch.full =~ /^remotes\/.+/ branches end[branch_name.to_s] end |
#each(&block) ⇒ Object
32 33 34 |
# File 'lib/git/branches.rb', line 32 def each(&block) @branches.values.each(&block) end |
#local ⇒ Object
18 19 20 |
# File 'lib/git/branches.rb', line 18 def local self.select { |b| !b.remote } end |
#remote ⇒ Object
22 23 24 |
# File 'lib/git/branches.rb', line 22 def remote self.select { |b| b.remote } end |
#size ⇒ Object
array like methods
28 29 30 |
# File 'lib/git/branches.rb', line 28 def size @branches.size end |
#to_s ⇒ Object
61 62 63 64 65 66 67 |
# File 'lib/git/branches.rb', line 61 def to_s out = '' @branches.each do |k, b| out << (b.current ? '* ' : ' ') << b.to_s << "\n" end out end |