Class | Git::Base |
In: |
lib/git/base.rb
|
Parent: | Object |
opens a bare Git Repository - no working directory options
# File lib/git/base.rb, line 10 def self.bare(git_dir) self.new :repository => git_dir end
clones a git repository locally
repository - http://repo.or.cz/w/sinatra.git name - sinatra
options:
:repository :bare or :working_directory :index_file
# File lib/git/base.rb, line 58 def self.clone(repository, name, opts = {}) # run git-clone self.new(Git::Lib.new.clone(repository, name, opts)) end
initializes a git repository
options:
:repository :index_file
# File lib/git/base.rb, line 29 def self.init(working_dir, opts = {}) default = {:working_directory => working_dir, :repository => File.join(working_dir, '.git')} git_options = default.merge(opts) if git_options[:working_directory] # if !working_dir, make it FileUtils.mkdir_p(git_options[:working_directory]) if !File.directory?(git_options[:working_directory]) end # run git_init there Git::Lib.new(git_options).init self.new(git_options) end
# File lib/git/base.rb, line 63 def initialize(options = {}) if working_dir = options[:working_directory] options[:repository] = File.join(working_dir, '.git') if !options[:repository] options[:index] = File.join(working_dir, '.git', 'index') if !options[:index] end @working_directory = Git::WorkingDirectory.new(options[:working_directory]) if options[:working_directory] @repository = Git::Repository.new(options[:repository]) if options[:repository] @index = Git::Index.new(options[:index], false) if options[:index] end
adds files from the working directory to the git repository
# File lib/git/base.rb, line 162 def add(path = '.') self.lib.add(path) end
# File lib/git/base.rb, line 213 def add_remote(name, url, opts = {}) if url.is_a?(Git::Base) url = url.repo.path end self.lib.remote_add(name, url, opts) Git::Remote.new(self, name) end
# File lib/git/base.rb, line 140 def branch(branch_name = 'master') Git::Branch.new(self, branch_name) end
# File lib/git/base.rb, line 188 def checkout(branch = 'master', opts = {}) self.lib.checkout(branch, opts) end
# File lib/git/base.rb, line 183 def commit_all(message, opts = {}) opts = {:add_all => true}.merge(opts) self.lib.commit(message, opts) end
g.config(‘user.name’, ‘Scott Chacon’) # sets value g.config(‘user.email’, ‘email@email.com’) # sets value g.config(‘user.name’) # returns ‘Scott Chacon’ g.config # returns whole config hash
# File lib/git/base.rb, line 105 def config(name = nil, value = nil) if(name && value) # set value lib.config_set(name, value) elsif (name) # return value lib.config_get(name) else # return hash lib.config_list end end
# File lib/git/base.rb, line 157 def diff(objectish = 'HEAD', obj2 = nil) Git::Diff.new(self, objectish, obj2) end
# File lib/git/base.rb, line 200 def merge(branch, message = 'merge') self.lib.merge(branch, message) end
factory methods
# File lib/git/base.rb, line 120 def object(objectish) Git::Object.new(self, objectish) end
# File lib/git/base.rb, line 204 def pull(remote = 'origin', branch = 'master', message = 'origin pull') fetch(remote) merge(branch, message) end
# File lib/git/base.rb, line 196 def push(remote = 'origin', branch = 'master') self.lib.push(remote, branch) end
# File lib/git/base.rb, line 144 def remote(remote_name = 'origin') Git::Remote.new(self, remote_name) end
# File lib/git/base.rb, line 209 def remotes self.lib.remotes.map { |r| Git::Remote.new(self, r) } end
# File lib/git/base.rb, line 93 def repo_size size = 0 Dir.chdir(repo.path) do (size, dot) = `du -d0`.chomp.split end size.to_i end
# File lib/git/base.rb, line 170 def reset(commitish = nil, opts = {}) self.lib.reset(commitish, opts) end
# File lib/git/base.rb, line 174 def reset_hard(commitish = nil, opts = {}) opts = {:hard => true}.merge(opts) self.lib.reset(commitish, opts) end