module Git
Public Class Methods
amend(dest, message)
click to toggle source
# File lib/git.rb, line 45 def amend dest, message Dir.chdir dest do system! 'git', 'commit', '--amend', '--message', message end end
checkout(dest, commit)
click to toggle source
# File lib/git.rb, line 32 def checkout dest, commit raise "commit is empty" unless commit Dir.chdir dest do system! 'git', 'checkout', '--quiet', '--force', '--detach', commit end end
init(dest)
click to toggle source
# File lib/git.rb, line 27 def init dest FileUtils.mkdir_p dest Dir.chdir dest do system! 'git', 'init' end end
message(dest, commit='HEAD')
click to toggle source
# File lib/git.rb, line 39 def message dest, commit='HEAD' Dir.chdir dest do `git log --format=%B -n 1 #{Shellwords.join([commit])}`.chomp end end
mirror(url, dest)
click to toggle source
# File lib/git.rb, line 6 def mirror url, dest if File.exists?(dest) Dir.chdir(dest) do system! 'git', 'fetch', '--tags', '--all', '--force', '--prune' end else FileUtils.mkdir_p dest system! 'git', 'clone', '--mirror', url, dest end end
write_commit_tree(repo_path, dest, commit)
click to toggle source
# File lib/git.rb, line 51 def write_commit_tree repo_path, dest, commit init dest object_path = Dir["#{repo_path}/{.git/,}objects"].first add_shared_objects dest, object_path checkout dest, commit end
Private Class Methods
system!(*args)
click to toggle source
# File lib/git.rb, line 60 def system! *args quiet = !ENV['VERBOSE'] && !ENV['DEBUG'] options = quiet ? {:out => '/dev/null', :err => '/dev/null'} : {} raise "Cannot run #{Shellwords.join(args)}" unless system(*args, options) end