Module: Envandle::GitUtil
- Defined in:
- lib/envandle/git_util.rb
Constant Summary collapse
- BIN =
`which git`.chomp
Class Method Summary collapse
- .init(dir, url, &block) ⇒ Object
- .ls_remote_sha(dir, q) ⇒ Object
- .pull(dir, ref, branch) ⇒ Object
- .pull_sha(dir, ref, branch) ⇒ Object
- .raise_if_no_git_installed ⇒ Object
Class Method Details
.init(dir, url, &block) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/envandle/git_util.rb', line 9 def self.init(dir, url, &block) unless dir Envandle.tmpdir do |tmpdir| init tmpdir, url, &block end else raise_if_no_git_installed Dir.chdir(dir) do Envandle.sh "#{BIN} init" Envandle.sh "#{BIN} remote add origin #{url}" yield dir if block_given? end end end |
.ls_remote_sha(dir, q) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/envandle/git_util.rb', line 24 def self.ls_remote_sha(dir, q) Dir.chdir(dir) do data = Envandle.sh("#{BIN} ls-remote origin #{q}").chomp data = if data.empty? [] else data.split("\n").map{|i| i.split(/\s+/)[0] } end if block_given? yield data else data end end end |
.pull(dir, ref, branch) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/envandle/git_util.rb', line 40 def self.pull(dir, ref, branch) Dir.chdir(dir) do Envandle.sh "#{BIN} checkout -b #{branch}" Envandle.sh "#{BIN} pull origin #{ref}:#{branch}" sha = Envandle.sh("#{BIN} rev-parse HEAD").chomp if block_given? yield sha else sha end end end |
.pull_sha(dir, ref, branch) ⇒ Object
53 54 55 56 57 58 59 |
# File 'lib/envandle/git_util.rb', line 53 def self.pull_sha(dir, ref, branch) Dir.chdir(dir) do Envandle.sh "#{BIN} checkout -b #{branch}" Envandle.sh "#{BIN} fetch origin" Envandle.sh "#{BIN} reset --hard #{ref}" end end |
.raise_if_no_git_installed ⇒ Object
5 6 7 |
# File 'lib/envandle/git_util.rb', line 5 def self.raise_if_no_git_installed raise "No git installed." if BIN.empty? end |