Class: Git::Base
- Inherits:
-
Object
- Object
- Git::Base
- Includes:
- Factory
- Defined in:
- lib/git/base.rb,
lib/git/base/factory.rb
Overview
Defined Under Namespace
Modules: Factory
Class Method Summary collapse
-
.bare(git_dir, options = {}) ⇒ Git::Base
Open a bare repository.
-
.clone(repository, name, options = {}) ⇒ Git::Base
Clone a repository into an empty or newly created directory.
-
.config ⇒ Git::Config
Returns (and initialize if needed) a Git::Config instance.
-
.init(directory, options = {}) ⇒ Git::Base
Create an empty Git repository or reinitialize an existing Git repository.
-
.open(working_dir, options = {}) ⇒ Git::Base
Open a an existing Git working directory.
Instance Method Summary collapse
-
#add(paths = '.', **options) ⇒ Object
updates the repository index using the working directory content.
-
#add_remote(name, url, opts = {}) ⇒ Object
adds a new remote to this repository url can be a git url or a Git::Base object if it’s a local reference.
-
#add_tag(name, *options) ⇒ Object
Creates a new git tag (Git::Tag).
- #apply(file) ⇒ Object
- #apply_mail(file) ⇒ Object
-
#archive(treeish, file = nil, opts = {}) ⇒ Object
creates an archive file of the given tree-ish.
- #cat_file(objectish) ⇒ Object
-
#chdir ⇒ Object
changes current working directory for a block to the git working directory.
-
#checkout(branch = 'master', opts = {}) ⇒ Object
checks out a branch as the new git working directory.
-
#checkout_file(version, file) ⇒ Object
checks out an old version of a file.
- #checkout_index(opts = {}) ⇒ Object
-
#clean(opts = {}) ⇒ Object
cleans the working directory.
-
#commit(message, opts = {}) ⇒ Object
commits all pending changes in the index file to the git repository.
-
#commit_all(message, opts = {}) ⇒ Object
commits all pending changes in the index file to the git repository, but automatically adds all modified files without having to explicitly calling @git.add() on them.
-
#config(name = nil, value = nil) ⇒ Object
g.config(‘user.name’, ‘Scott Chacon’) # sets value g.config(‘user.email’, ‘[email protected]’) # sets value g.config(‘user.name’) # returns ‘Scott Chacon’ g.config # returns whole config hash.
-
#current_branch ⇒ Object
returns the name of the branch the working directory is currently on.
-
#delete_tag(name) ⇒ Object
deletes a tag.
-
#describe(committish = nil, opts = {}) ⇒ Object
returns the most recent tag that is reachable from a commit.
-
#dir ⇒ Object
returns a reference to the working directory @git.dir.path @git.dir.writeable?.
-
#each_conflict(&block) ⇒ Object
iterates over the files which are unmerged.
-
#fetch(remote = 'origin', opts = {}) ⇒ Object
fetches changes from a remote branch - this does not modify the working directory, it just gets the changes from the remote if there are any.
- #gc ⇒ Object
-
#grep(string, path_limiter = nil, opts = {}) ⇒ Hash<String, Array>
Run a grep for ‘string’ on the HEAD of the git repository.
-
#index ⇒ Object
returns reference to the git index file.
-
#initialize(options = {}) ⇒ Git::Base
constructor
Create an object that executes Git commands in the context of a working copy or a bare repository.
-
#is_branch?(branch) ⇒ Boolean
returns
true
if the branch exists. -
#is_local_branch?(branch) ⇒ Boolean
returns
true
if the branch exists locally. -
#is_remote_branch?(branch) ⇒ Boolean
returns
true
if the branch exists remotely. -
#lib ⇒ Object
this is a convenience method for accessing the class that wraps all the actual ‘git’ forked system calls.
- #ls_files(location = nil) ⇒ Object
- #ls_tree(objectish) ⇒ Object
-
#merge(branch, message = 'merge', opts = {}) ⇒ Object
merges one or more branches into the current working branch.
-
#pull(remote = 'origin', branch = 'master') ⇒ Object
pulls the given branch from the given remote into the current branch.
-
#push(remote = 'origin', branch = 'master', opts = {}) ⇒ Object
pushes changes to a remote repository - easiest if this is a cloned repository, otherwise you may have to run something like this first to setup the push parameters:.
- #read_tree(treeish, opts = {}) ⇒ Object
-
#remotes ⇒ Object
returns an array of Git:Remote objects.
-
#remove(path = '.', opts = {}) ⇒ Object
removes file(s) from the git repository.
-
#remove_remote(name) ⇒ Object
removes a remote from this repository.
-
#repack ⇒ Object
repacks the repository.
-
#repo ⇒ Object
returns reference to the git repository directory @git.dir.path.
-
#repo_size ⇒ Object
returns the repository size in bytes.
-
#reset(commitish = nil, opts = {}) ⇒ Object
resets the working directory to the provided commitish.
-
#reset_hard(commitish = nil, opts = {}) ⇒ Object
resets the working directory to the commitish with ‘–hard’.
-
#revert(commitish = nil, opts = {}) ⇒ Object
reverts the working directory to the provided commitish.
-
#revparse(objectish) ⇒ Object
runs git rev-parse to convert the objectish to a full sha.
- #set_index(index_file, check = true) ⇒ Object
-
#set_remote_url(name, url) ⇒ Object
sets the url for a remote url can be a git url or a Git::Base object if it’s a local reference.
- #set_working(work_dir, check = true) ⇒ Object
-
#show(objectish = nil, path = nil) ⇒ String
Shows objects.
-
#tags ⇒ Object
returns an array of all Git::Tag objects for this repository.
- #update_ref(branch, commit) ⇒ Object
-
#with_index(new_index) ⇒ Object
LOWER LEVEL INDEX OPERATIONS ##.
- #with_temp_index(&blk) ⇒ Object
- #with_temp_working(&blk) ⇒ Object
-
#with_working(work_dir) ⇒ Object
:yields: the Git::WorkingDirectory.
- #write_and_commit_tree(opts = {}) ⇒ Object
- #write_tree ⇒ Object
Methods included from Factory
#branch, #branches, #commit_tree, #diff, #gblob, #gcommit, #gtree, #log, #merge_base, #object, #remote, #status, #tag, #worktree, #worktrees
Constructor Details
#initialize(options = {}) ⇒ Git::Base
Create an object that executes Git commands in the context of a working copy or a bare repository.
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/git/base.rb', line 106 def initialize( = {}) if working_dir = [:working_directory] [:repository] ||= File.join(working_dir, '.git') [:index] ||= File.join([:repository], 'index') end if [:log] @logger = [:log] @logger.info("Starting Git") else @logger = nil end @working_directory = [:working_directory] ? Git::WorkingDirectory.new([:working_directory]) : nil @repository = [:repository] ? Git::Repository.new([:repository]) : nil @index = [:index] ? Git::Index.new([:index], false) : nil end |
Class Method Details
.bare(git_dir, options = {}) ⇒ Git::Base
Open a bare repository
Opens a bare repository located in the ‘git_dir` directory. Since there is no working copy, you can not checkout or commit but you can do most read operations.
14 15 16 |
# File 'lib/git/base.rb', line 14 def self.(git_dir, = {}) self.new({:repository => git_dir}.merge()) end |
.clone(repository, name, options = {}) ⇒ Git::Base
Clone a repository into an empty or newly created directory
19 20 21 |
# File 'lib/git/base.rb', line 19 def self.clone(repository, name, = {}) self.new(Git::Lib.new(nil, [:log]).clone(repository, name, )) end |
.config ⇒ Git::Config
Returns (and initialize if needed) a Git::Config instance
26 27 28 |
# File 'lib/git/base.rb', line 26 def self.config return @@config ||= Config.new end |
.init(directory, options = {}) ⇒ Git::Base
Create an empty Git repository or reinitialize an existing Git repository
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/git/base.rb', line 31 def self.init(directory, = {}) [:working_directory] ||= directory [:repository] ||= File.join([:working_directory], '.git') FileUtils.mkdir_p([:working_directory]) if [:working_directory] && !File.directory?([:working_directory]) = { :bare => [:bare] } .delete(:working_directory) if [:bare] # Submodules have a .git *file* not a .git folder. # This file's contents point to the location of # where the git refs are held (In the parent repo) if [:working_directory] && File.file?(File.join([:working_directory], '.git')) git_file = File.open('.git').read[8..-1].strip [:repository] = git_file [:index] = git_file + '/index' end # TODO: this dance seems awkward: this creates a Git::Lib so we can call # init so we can create a new Git::Base which in turn (ultimately) # creates another/different Git::Lib. # # TODO: maybe refactor so this Git::Bare.init does this: # self.new(opts).init(init_opts) and move all/some of this code into # Git::Bare#init. This way the init method can be called on any # repository you have a Git::Base instance for. This would not # change the existing interface (other than adding to it). # Git::Lib.new().init() self.new() end |
.open(working_dir, options = {}) ⇒ Git::Base
Open a an existing Git working directory
Git.open will most likely be the most common way to create a git reference, referring to an existing working directory.
If not provided in the options, the library will assume the repository and index are in the default places (‘.git/`, `.git/index`).
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/git/base.rb', line 66 def self.open(working_dir, ={}) # TODO: move this to Git.open? [:working_directory] ||= working_dir [:repository] ||= File.join([:working_directory], '.git') # Submodules have a .git *file* not a .git folder. # This file's contents point to the location of # where the git refs are held (In the parent repo) if [:working_directory] && File.file?(File.join([:working_directory], '.git')) git_file = File.open('.git').read[8..-1].strip [:repository] = git_file [:index] = git_file + '/index' end self.new() end |
Instance Method Details
#add(paths = '.', **options) ⇒ Object
updates the repository index using the working directory content
options:
:all => true
264 265 266 |
# File 'lib/git/base.rb', line 264 def add(paths = '.', **) self.lib.add(paths, ) end |
#add_remote(name, url, opts = {}) ⇒ Object
adds a new remote to this repository url can be a git url or a Git::Base object if it’s a local reference
@git.add_remote('scotts_git', 'git://repo.or.cz/rubygit.git')
@git.fetch('scotts_git')
@git.merge('scotts_git/master')
Options:
:fetch => true
:track => <branch_name>
408 409 410 411 412 |
# File 'lib/git/base.rb', line 408 def add_remote(name, url, opts = {}) url = url.repo.path if url.is_a?(Git::Base) self.lib.remote_add(name, url, opts) Git::Remote.new(self, name) end |
#add_tag(name, *options) ⇒ Object
Creates a new git tag (Git::Tag)
455 456 457 458 |
# File 'lib/git/base.rb', line 455 def add_tag(name, *) self.lib.tag(name, *) self.tag(name) end |
#apply(file) ⇒ Object
479 480 481 482 483 |
# File 'lib/git/base.rb', line 479 def apply(file) if File.exist?(file) self.lib.apply(file) end end |
#apply_mail(file) ⇒ Object
485 486 487 |
# File 'lib/git/base.rb', line 485 def apply_mail(file) self.lib.apply_mail(file) if File.exist?(file) end |
#archive(treeish, file = nil, opts = {}) ⇒ Object
creates an archive file of the given tree-ish
466 467 468 |
# File 'lib/git/base.rb', line 466 def archive(treeish, file = nil, opts = {}) self.object(treeish).archive(file, opts) end |
#cat_file(objectish) ⇒ Object
585 586 587 |
# File 'lib/git/base.rb', line 585 def cat_file(objectish) self.lib.object_contents(objectish) end |
#chdir ⇒ Object
changes current working directory for a block to the git working directory
example
@git.chdir do
# write files
@git.add
@git.commit('message')
end
132 133 134 135 136 |
# File 'lib/git/base.rb', line 132 def chdir # :yields: the Git::Path Dir.chdir(dir.path) do yield dir.path end end |
#checkout(branch = 'master', opts = {}) ⇒ Object
checks out a branch as the new git working directory
344 345 346 |
# File 'lib/git/base.rb', line 344 def checkout(branch = 'master', opts = {}) self.lib.checkout(branch, opts) end |
#checkout_file(version, file) ⇒ Object
checks out an old version of a file
349 350 351 |
# File 'lib/git/base.rb', line 349 def checkout_file(version, file) self.lib.checkout_file(version,file) end |
#checkout_index(opts = {}) ⇒ Object
523 524 525 |
# File 'lib/git/base.rb', line 523 def checkout_index(opts = {}) self.lib.checkout_index(opts) end |
#clean(opts = {}) ⇒ Object
cleans the working directory
options:
:force
:d
290 291 292 |
# File 'lib/git/base.rb', line 290 def clean(opts = {}) self.lib.clean(opts) end |
#commit(message, opts = {}) ⇒ Object
commits all pending changes in the index file to the git repository
options:
:all
:allow_empty
:amend
:author
331 332 333 |
# File 'lib/git/base.rb', line 331 def commit(, opts = {}) self.lib.commit(, opts) end |
#commit_all(message, opts = {}) ⇒ Object
commits all pending changes in the index file to the git repository, but automatically adds all modified files without having to explicitly calling @git.add() on them.
338 339 340 341 |
# File 'lib/git/base.rb', line 338 def commit_all(, opts = {}) opts = {:add_all => true}.merge(opts) self.lib.commit(, opts) end |
#config(name = nil, value = nil) ⇒ Object
g.config(‘user.name’, ‘Scott Chacon’) # sets value g.config(‘user.email’, ‘[email protected]’) # sets value g.config(‘user.name’) # returns ‘Scott Chacon’ g.config # returns whole config hash
142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/git/base.rb', line 142 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 |
#current_branch ⇒ Object
returns the name of the branch the working directory is currently on
590 591 592 |
# File 'lib/git/base.rb', line 590 def current_branch self.lib.branch_current end |
#delete_tag(name) ⇒ Object
deletes a tag
461 462 463 |
# File 'lib/git/base.rb', line 461 def delete_tag(name) self.lib.tag(name, {:d => true}) end |
#describe(committish = nil, opts = {}) ⇒ Object
returns the most recent tag that is reachable from a commit
options:
:all
:tags
:contains
:debug
:exact_match
:dirty
:abbrev
:candidates
:long
:always
:match
309 310 311 |
# File 'lib/git/base.rb', line 309 def describe(committish=nil, opts={}) self.lib.describe(committish, opts) end |
#dir ⇒ Object
returns a reference to the working directory
@git.dir.path
@git.dir.writeable?
158 159 160 |
# File 'lib/git/base.rb', line 158 def dir @working_directory end |
#each_conflict(&block) ⇒ Object
iterates over the files which are unmerged
379 380 381 |
# File 'lib/git/base.rb', line 379 def each_conflict(&block) # :yields: file, your_version, their_version self.lib.conflicts(&block) end |
#fetch(remote = 'origin', opts = {}) ⇒ Object
fetches changes from a remote branch - this does not modify the working directory, it just gets the changes from the remote if there are any
355 356 357 |
# File 'lib/git/base.rb', line 355 def fetch(remote = 'origin', opts={}) self.lib.fetch(remote, opts) end |
#gc ⇒ Object
475 476 477 |
# File 'lib/git/base.rb', line 475 def gc self.lib.gc end |
#grep(string, path_limiter = nil, opts = {}) ⇒ Hash<String, Array>
Run a grep for ‘string’ on the HEAD of the git repository
241 242 243 |
# File 'lib/git/base.rb', line 241 def grep(string, path_limiter = nil, opts = {}) self.object('HEAD').grep(string, path_limiter, opts) end |
#index ⇒ Object
returns reference to the git index file
163 164 165 |
# File 'lib/git/base.rb', line 163 def index @index end |
#is_branch?(branch) ⇒ Boolean
returns true
if the branch exists
207 208 209 210 |
# File 'lib/git/base.rb', line 207 def is_branch?(branch) branch_names = self.branches.map {|b| b.name} branch_names.include?(branch) end |
#is_local_branch?(branch) ⇒ Boolean
returns true
if the branch exists locally
195 196 197 198 |
# File 'lib/git/base.rb', line 195 def is_local_branch?(branch) branch_names = self.branches.local.map {|b| b.name} branch_names.include?(branch) end |
#is_remote_branch?(branch) ⇒ Boolean
returns true
if the branch exists remotely
201 202 203 204 |
# File 'lib/git/base.rb', line 201 def is_remote_branch?(branch) branch_names = self.branches.remote.map {|b| b.name} branch_names.include?(branch) end |
#lib ⇒ Object
this is a convenience method for accessing the class that wraps all the actual ‘git’ forked system calls. At some point I hope to replace the Git::Lib class with one that uses native methods or libgit C bindings
215 216 217 |
# File 'lib/git/base.rb', line 215 def lib @lib ||= Git::Lib.new(self, @logger) end |
#ls_files(location = nil) ⇒ Object
545 546 547 |
# File 'lib/git/base.rb', line 545 def ls_files(location=nil) self.lib.ls_files(location) end |
#ls_tree(objectish) ⇒ Object
581 582 583 |
# File 'lib/git/base.rb', line 581 def ls_tree(objectish) self.lib.ls_tree(objectish) end |
#merge(branch, message = 'merge', opts = {}) ⇒ Object
merges one or more branches into the current working branch
you can specify more than one branch to merge by passing an array of branches
374 375 376 |
# File 'lib/git/base.rb', line 374 def merge(branch, = 'merge', opts = {}) self.lib.merge(branch, , opts) end |
#pull(remote = 'origin', branch = 'master') ⇒ Object
pulls the given branch from the given remote into the current branch
@git.pull # pulls from origin/master
@git.pull('upstream') # pulls from upstream/master
@git.pull('upstream', 'develope') # pulls from upstream/develop
389 390 391 |
# File 'lib/git/base.rb', line 389 def pull(remote='origin', branch='master') self.lib.pull(remote, branch) end |
#push(remote = 'origin', branch = 'master', opts = {}) ⇒ Object
pushes changes to a remote repository - easiest if this is a cloned repository, otherwise you may have to run something like this first to setup the push parameters:
@git.config('remote.remote-name.push', 'refs/heads/master:refs/heads/master')
364 365 366 367 368 369 |
# File 'lib/git/base.rb', line 364 def push(remote = 'origin', branch = 'master', opts = {}) # Small hack to keep backwards compatibility with the 'push(remote, branch, tags)' method signature. opts = {:tags => opts} if [true, false].include?(opts) self.lib.push(remote, branch, opts) end |
#read_tree(treeish, opts = {}) ⇒ Object
527 528 529 |
# File 'lib/git/base.rb', line 527 def read_tree(treeish, opts = {}) self.lib.read_tree(treeish, opts) end |
#remotes ⇒ Object
returns an array of Git:Remote objects
394 395 396 |
# File 'lib/git/base.rb', line 394 def remotes self.lib.remotes.map { |r| Git::Remote.new(self, r) } end |
#remove(path = '.', opts = {}) ⇒ Object
removes file(s) from the git repository
269 270 271 |
# File 'lib/git/base.rb', line 269 def remove(path = '.', opts = {}) self.lib.remove(path, opts) end |
#remove_remote(name) ⇒ Object
removes a remote from this repository
@git.remove_remote(‘scott_git’)
428 429 430 |
# File 'lib/git/base.rb', line 428 def remove_remote(name) self.lib.remote_remove(name) end |
#repack ⇒ Object
repacks the repository
471 472 473 |
# File 'lib/git/base.rb', line 471 def repack self.lib.repack end |
#repo ⇒ Object
returns reference to the git repository directory
@git.dir.path
169 170 171 |
# File 'lib/git/base.rb', line 169 def repo @repository end |
#repo_size ⇒ Object
returns the repository size in bytes
174 175 176 177 178 179 180 181 182 |
# File 'lib/git/base.rb', line 174 def repo_size Dir.glob(File.join(repo.path, '**', '*'), File::FNM_DOTMATCH).reject do |f| f.include?('..') end.map do |f| File.(f) end.uniq.map do |f| File.stat(f).size.to_i end.reduce(:+) end |
#reset(commitish = nil, opts = {}) ⇒ Object
resets the working directory to the provided commitish
274 275 276 |
# File 'lib/git/base.rb', line 274 def reset(commitish = nil, opts = {}) self.lib.reset(commitish, opts) end |
#reset_hard(commitish = nil, opts = {}) ⇒ Object
resets the working directory to the commitish with ‘–hard’
279 280 281 282 |
# File 'lib/git/base.rb', line 279 def reset_hard(commitish = nil, opts = {}) opts = {:hard => true}.merge(opts) self.lib.reset(commitish, opts) end |
#revert(commitish = nil, opts = {}) ⇒ Object
reverts the working directory to the provided commitish. Accepts a range, such as comittish..HEAD
options:
:no_edit
319 320 321 |
# File 'lib/git/base.rb', line 319 def revert(commitish = nil, opts = {}) self.lib.revert(commitish, opts) end |
#revparse(objectish) ⇒ Object
runs git rev-parse to convert the objectish to a full sha
577 578 579 |
# File 'lib/git/base.rb', line 577 def revparse(objectish) self.lib.revparse(objectish) end |
#set_index(index_file, check = true) ⇒ Object
184 185 186 187 |
# File 'lib/git/base.rb', line 184 def set_index(index_file, check = true) @lib = nil @index = Git::Index.new(index_file.to_s, check) end |
#set_remote_url(name, url) ⇒ Object
sets the url for a remote url can be a git url or a Git::Base object if it’s a local reference
@git.set_remote_url('scotts_git', 'git://repo.or.cz/rubygit.git')
419 420 421 422 423 |
# File 'lib/git/base.rb', line 419 def set_remote_url(name, url) url = url.repo.path if url.is_a?(Git::Base) self.lib.remote_set_url(name, url) Git::Remote.new(self, name) end |
#set_working(work_dir, check = true) ⇒ Object
189 190 191 192 |
# File 'lib/git/base.rb', line 189 def set_working(work_dir, check = true) @lib = nil @working_directory = Git::WorkingDirectory.new(work_dir.to_s, check) end |
#show(objectish = nil, path = nil) ⇒ String
Shows objects
494 495 496 |
# File 'lib/git/base.rb', line 494 def show(objectish=nil, path=nil) self.lib.show(objectish, path) end |
#tags ⇒ Object
returns an array of all Git::Tag objects for this repository
433 434 435 |
# File 'lib/git/base.rb', line 433 def self.lib..map { |r| tag(r) } end |
#update_ref(branch, commit) ⇒ Object
540 541 542 |
# File 'lib/git/base.rb', line 540 def update_ref(branch, commit) branch(branch).update_ref(commit) end |
#with_index(new_index) ⇒ Object
LOWER LEVEL INDEX OPERATIONS ##
500 501 502 503 504 505 506 |
# File 'lib/git/base.rb', line 500 def with_index(new_index) # :yields: new_index old_index = @index set_index(new_index, false) return_value = yield @index set_index(old_index) return_value end |
#with_temp_index(&blk) ⇒ Object
508 509 510 511 512 513 514 515 516 517 518 519 520 521 |
# File 'lib/git/base.rb', line 508 def with_temp_index &blk # Workaround for JRUBY, since they handle the TempFile path different. # MUST be improved to be safer and OS independent. if RUBY_PLATFORM == 'java' temp_path = "/tmp/temp-index-#{(0...15).map{ ('a'..'z').to_a[rand(26)] }.join}" else tempfile = Tempfile.new('temp-index') temp_path = tempfile.path tempfile.close tempfile.unlink end with_index(temp_path, &blk) end |
#with_temp_working(&blk) ⇒ Object
560 561 562 563 564 565 566 567 |
# File 'lib/git/base.rb', line 560 def with_temp_working &blk tempfile = Tempfile.new("temp-workdir") temp_dir = tempfile.path tempfile.close tempfile.unlink Dir.mkdir(temp_dir, 0700) with_working(temp_dir, &blk) end |
#with_working(work_dir) ⇒ Object
:yields: the Git::WorkingDirectory
549 550 551 552 553 554 555 556 557 558 |
# File 'lib/git/base.rb', line 549 def with_working(work_dir) # :yields: the Git::WorkingDirectory return_value = false old_working = @working_directory set_working(work_dir) Dir.chdir work_dir do return_value = yield @working_directory end set_working(old_working) return_value end |
#write_and_commit_tree(opts = {}) ⇒ Object
535 536 537 538 |
# File 'lib/git/base.rb', line 535 def write_and_commit_tree(opts = {}) tree = write_tree commit_tree(tree, opts) end |
#write_tree ⇒ Object
531 532 533 |
# File 'lib/git/base.rb', line 531 def write_tree self.lib.write_tree end |