Class: Git::Base
- Inherits:
-
Object
- Object
- Git::Base
- Defined in:
- lib/git/base.rb
Overview
Class Method Summary collapse
-
.bare(git_dir, options = {}) ⇒ Git::Base
Open a bare repository.
-
.clone(repository_url, directory, 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.
-
.repository_default_branch(repository, options = {}) ⇒ String
Returns the name of the default branch of the given repository.
- .root_of_worktree(working_dir)
Instance Method Summary collapse
-
#add(paths = '.', **options)
updates the repository index using the working directory content.
-
#add_remote(name, url, opts = {})
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)
Creates a new git tag (Git::Tag).
- #apply(file)
- #apply_mail(file)
-
#archive(treeish, file = nil, opts = {})
creates an archive file of the given tree-ish.
-
#branch(branch_name = self.current_branch) ⇒ Git::Branch
An object for branch_name.
-
#branches ⇒ Git::Branches
A collection of all the branches in the repository.
- #cat_file(objectish)
-
#chdir
changes current working directory for a block to the git working directory.
-
#checkout(*args, **options)
checks out a branch as the new git working directory.
-
#checkout_file(version, file)
checks out an old version of a file.
- #checkout_index(opts = {})
-
#clean(opts = {})
cleans the working directory.
-
#commit(message, opts = {})
commits all pending changes in the index file to the git repository.
-
#commit_all(message, opts = {})
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.
-
#commit_tree(tree = nil, opts = {}) ⇒ Git::Object::Commit
A commit object.
-
#config(name = nil, value = nil, options = {})
g.config('user.name', 'Scott Chacon') # sets value g.config('user.email', '[email protected]') # sets value g.config('user.email', '[email protected]', file: 'path/to/custom/config) # sets value in file g.config('user.name') # returns 'Scott Chacon' g.config # returns whole config hash.
-
#current_branch
returns the name of the branch the working directory is currently on.
-
#delete_tag(name)
deletes a tag.
-
#describe(committish = nil, opts = {})
returns the most recent tag that is reachable from a commit.
-
#diff(objectish = 'HEAD', obj2 = nil) ⇒ Git::Diff
A Git::Diff object.
-
#dir
returns a reference to the working directory @git.dir.path @git.dir.writeable?.
-
#each_conflict(&block)
iterates over the files which are unmerged.
-
#fetch(remote = 'origin', opts = {})
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.
-
#gblob(objectish) ⇒ Git::Object
A Git object.
- #gc
-
#gcommit(objectish) ⇒ Git::Object
A Git object.
-
#grep(string, path_limiter = nil, opts = {}) ⇒ Hash<String, Array>
Run a grep for 'string' on the HEAD of the git repository.
-
#gtree(objectish) ⇒ Git::Object
A Git object.
-
#index
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
this is a convenience method for accessing the class that wraps all the actual 'git' forked system calls.
-
#log(count = 30) ⇒ Git::Log
A log with the specified number of commits.
- #ls_files(location = nil)
- #ls_tree(objectish)
-
#merge(branch, message = 'merge', opts = {})
merges one or more branches into the current working branch.
-
#merge_base(*args) ⇒ Array<Git::Object::Commit>
Find as good common ancestors as possible for a merge example: g.merge_base('master', 'some_branch', 'some_sha', octopus: true).
-
#object(objectish) ⇒ Git::Object
returns a Git::Object of the appropriate type you can also call @git.gtree('tree'), but that's just for readability.
-
#pull(remote = nil, branch = nil, opts = {}) ⇒ Void
Pulls the given branch from the given remote into the current branch.
-
#push(remote = nil, branch = nil, options = {}) ⇒ Void
Push changes to a remote repository.
- #read_tree(treeish, opts = {})
-
#remote(remote_name = 'origin') ⇒ Git::Remote
A remote of the specified name.
-
#remotes
returns an array of Git:Remote objects.
-
#remove_remote(name)
removes a remote from this repository.
-
#repack
repacks the repository.
-
#repo
returns reference to the git repository directory @git.dir.path.
-
#repo_size
returns the repository size in bytes.
-
#reset(commitish = nil, opts = {})
resets the working directory to the provided commitish.
-
#reset_hard(commitish = nil, opts = {})
resets the working directory to the commitish with '--hard'.
-
#revert(commitish = nil, opts = {})
reverts the working directory to the provided commitish.
-
#revparse(objectish)
runs git rev-parse to convert the objectish to a full sha.
-
#rm(path = '.', opts = {})
(also: #remove)
removes file(s) from the git repository.
- #set_index(index_file, check = true)
-
#set_remote_url(name, url)
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)
-
#show(objectish = nil, path = nil) ⇒ String
Shows objects.
-
#status ⇒ Git::Status
A status object.
-
#tag(tag_name) ⇒ Git::Object::Tag
A tag object.
-
#tags
returns an array of all Git::Tag objects for this repository.
- #update_ref(branch, commit)
-
#with_index(new_index)
LOWER LEVEL INDEX OPERATIONS ##.
- #with_temp_index(&blk)
- #with_temp_working(&blk)
-
#with_working(work_dir)
:yields: the Git::WorkingDirectory.
-
#worktree(dir, commitish = nil)
returns a Git::Worktree object for dir, commitish.
-
#worktrees
returns a Git::worktrees object of all the Git::Worktrees objects for this repo.
- #write_and_commit_tree(opts = {})
- #write_tree
Constructor Details
#initialize(options = {}) ⇒ Git::Base
Create an object that executes Git commands in the context of a working copy or a bare repository.
109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'lib/git/base.rb', line 109 def initialize( = {}) if working_dir = [:working_directory] [:repository] ||= File.join(working_dir, '.git') [:index] ||= File.join([:repository], 'index') end @logger = ([:log] || Logger.new(nil)) @logger.info("Starting Git") @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.
13 14 15 16 |
# File 'lib/git/base.rb', line 13 def self.(git_dir, = {}) normalize_paths(, default_repository: git_dir, bare: true) self.new() end |
.clone(repository_url, directory, options = {}) ⇒ Git::Base
Clone a repository into an empty or newly created directory
19 20 21 22 23 |
# File 'lib/git/base.rb', line 19 def self.clone(repository_url, directory, = {}) = Git::Lib.new(nil, [:log]).clone(repository_url, directory, ) normalize_paths(, bare: [:bare] || [:mirror]) new() end |
.config ⇒ Git::Config
Returns (and initialize if needed) a Git::Config instance
33 34 35 |
# File 'lib/git/base.rb', line 33 def self.config @@config ||= Config.new end |
.init(directory = '.', options = {}) ⇒ Git::Base
Create an empty Git repository or reinitialize an existing Git repository
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 |
# File 'lib/git/base.rb', line 38 def self.init(directory = '.', = {}) normalize_paths(, default_working_directory: directory, default_repository: directory, bare: [:bare]) = { :bare => [:bare], :initial_branch => [:initial_branch] } directory = [:bare] ? [:repository] : [:working_directory] FileUtils.mkdir_p(directory) unless File.exist?(directory) # 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
).
77 78 79 80 81 82 83 84 85 |
# File 'lib/git/base.rb', line 77 def self.open(working_dir, = {}) raise ArgumentError, "'#{working_dir}' is not a directory" unless Dir.exist?(working_dir) working_dir = root_of_worktree(working_dir) unless [:repository] normalize_paths(, default_working_directory: working_dir) self.new() end |
.repository_default_branch(repository, options = {}) ⇒ String
Returns the name of the default branch of the given repository
26 27 28 |
# File 'lib/git/base.rb', line 26 def self.repository_default_branch(repository, = {}) Git::Lib.new(nil, [:log]).repository_default_branch(repository) end |
.root_of_worktree(working_dir)
64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/git/base.rb', line 64 def self.root_of_worktree(working_dir) result = working_dir status = nil git_cmd = "#{Git::Base.config.binary_path} -c core.quotePath=true -c color.ui=false rev-parse --show-toplevel 2>&1" result, status = Open3.capture2(git_cmd, chdir: File.(working_dir)) result = result.chomp raise ArgumentError, "'#{working_dir}' is not in a git working tree" unless status.success? result end |
Instance Method Details
#add(paths = '.', **options)
updates the repository index using the working directory content
options: :all => true
273 274 275 |
# File 'lib/git/base.rb', line 273 def add(paths = '.', **) self.lib.add(paths, ) end |
#add_remote(name, url, opts = {})
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 =>
447 448 449 450 451 |
# File 'lib/git/base.rb', line 447 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)
Creates a new git tag (Git::Tag)
494 495 496 497 |
# File 'lib/git/base.rb', line 494 def add_tag(name, *) self.lib.tag(name, *) self.tag(name) end |
#apply(file)
518 519 520 521 522 |
# File 'lib/git/base.rb', line 518 def apply(file) if File.exist?(file) self.lib.apply(file) end end |
#apply_mail(file)
524 525 526 |
# File 'lib/git/base.rb', line 524 def apply_mail(file) self.lib.apply_mail(file) if File.exist?(file) end |
#archive(treeish, file = nil, opts = {})
creates an archive file of the given tree-ish
505 506 507 |
# File 'lib/git/base.rb', line 505 def archive(treeish, file = nil, opts = {}) self.object(treeish).archive(file, opts) end |
#branch(branch_name = self.current_branch) ⇒ Git::Branch
Returns an object for branch_name.
633 634 635 |
# File 'lib/git/base.rb', line 633 def branch(branch_name = self.current_branch) Git::Branch.new(self, branch_name) end |
#branches ⇒ Git::Branches
Returns a collection of all the branches in the repository. Each branch is represented as a Git::Branch.
639 640 641 |
# File 'lib/git/base.rb', line 639 def branches Git::Branches.new(self) end |
#cat_file(objectish)
623 624 625 |
# File 'lib/git/base.rb', line 623 def cat_file(objectish) self.lib.object_contents(objectish) end |
#chdir
changes current working directory for a block to the git working directory
example @git.chdir do # write files @git.add @git.commit('message') end
131 132 133 134 135 |
# File 'lib/git/base.rb', line 131 def chdir # :yields: the Git::Path Dir.chdir(dir.path) do yield dir.path end end |
#checkout(*args, **options)
checks out a branch as the new git working directory
356 357 358 |
# File 'lib/git/base.rb', line 356 def checkout(*args, **) self.lib.checkout(*args, **) end |
#checkout_file(version, file)
checks out an old version of a file
361 362 363 |
# File 'lib/git/base.rb', line 361 def checkout_file(version, file) self.lib.checkout_file(version,file) end |
#checkout_index(opts = {})
562 563 564 |
# File 'lib/git/base.rb', line 562 def checkout_index(opts = {}) self.lib.checkout_index(opts) end |
#clean(opts = {})
cleans the working directory
options: :force :d :ff
302 303 304 |
# File 'lib/git/base.rb', line 302 def clean(opts = {}) self.lib.clean(opts) end |
#commit(message, opts = {})
commits all pending changes in the index file to the git repository
options: :all :allow_empty :amend :author
343 344 345 |
# File 'lib/git/base.rb', line 343 def commit(, opts = {}) self.lib.commit(, opts) end |
#commit_all(message, opts = {})
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.
350 351 352 353 |
# File 'lib/git/base.rb', line 350 def commit_all(, opts = {}) opts = {:add_all => true}.merge(opts) self.lib.commit(, opts) end |
#commit_tree(tree = nil, opts = {}) ⇒ Git::Object::Commit
Returns a commit object.
655 656 657 |
# File 'lib/git/base.rb', line 655 def commit_tree(tree = nil, opts = {}) Git::Object::Commit.new(self, self.lib.commit_tree(tree, opts)) end |
#config(name = nil, value = nil, options = {})
g.config('user.name', 'Scott Chacon') # sets value g.config('user.email', '[email protected]') # sets value g.config('user.email', '[email protected]', file: 'path/to/custom/config) # sets value in file 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
returns the name of the branch the working directory is currently on
628 629 630 |
# File 'lib/git/base.rb', line 628 def current_branch self.lib.branch_current end |
#delete_tag(name)
deletes a tag
500 501 502 |
# File 'lib/git/base.rb', line 500 def delete_tag(name) self.lib.tag(name, {:d => true}) end |
#describe(committish = nil, opts = {})
returns the most recent tag that is reachable from a commit
options: :all :tags :contains :debug :exact_match :dirty :abbrev :candidates :long :always :match
321 322 323 |
# File 'lib/git/base.rb', line 321 def describe(committish=nil, opts={}) self.lib.describe(committish, opts) end |
#diff(objectish = 'HEAD', obj2 = nil) ⇒ Git::Diff
Returns a Git::Diff object.
660 661 662 |
# File 'lib/git/base.rb', line 660 def diff(objectish = 'HEAD', obj2 = nil) Git::Diff.new(self, objectish, obj2) end |
#dir
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)
iterates over the files which are unmerged
405 406 407 |
# File 'lib/git/base.rb', line 405 def each_conflict(&block) # :yields: file, your_version, their_version self.lib.conflicts(&block) end |
#fetch(remote = 'origin', opts = {})
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
367 368 369 370 371 372 373 |
# File 'lib/git/base.rb', line 367 def fetch(remote = 'origin', opts = {}) if remote.is_a?(Hash) opts = remote remote = nil end self.lib.fetch(remote, opts) end |
#gblob(objectish) ⇒ Git::Object
Returns a Git object.
665 666 667 |
# File 'lib/git/base.rb', line 665 def gblob(objectish) Git::Object.new(self, objectish, 'blob') end |
#gc
514 515 516 |
# File 'lib/git/base.rb', line 514 def gc self.lib.gc end |
#gcommit(objectish) ⇒ Git::Object
Returns a Git object.
670 671 672 |
# File 'lib/git/base.rb', line 670 def gcommit(objectish) Git::Object.new(self, objectish, 'commit') end |
#grep(string, path_limiter = nil, opts = {}) ⇒ Hash<String, Array>
Run a grep for 'string' on the HEAD of the git repository
250 251 252 |
# File 'lib/git/base.rb', line 250 def grep(string, path_limiter = nil, opts = {}) self.object('HEAD').grep(string, path_limiter, opts) end |
#gtree(objectish) ⇒ Git::Object
Returns a Git object.
675 676 677 |
# File 'lib/git/base.rb', line 675 def gtree(objectish) Git::Object.new(self, objectish, 'tree') end |
#index
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
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 |
#log(count = 30) ⇒ Git::Log
Returns a log with the specified number of commits.
680 681 682 |
# File 'lib/git/base.rb', line 680 def log(count = 30) Git::Log.new(self, count) end |
#ls_files(location = nil)
584 585 586 |
# File 'lib/git/base.rb', line 584 def ls_files(location=nil) self.lib.ls_files(location) end |
#ls_tree(objectish)
619 620 621 |
# File 'lib/git/base.rb', line 619 def ls_tree(objectish) self.lib.ls_tree(objectish) end |
#merge(branch, message = 'merge', opts = {})
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
400 401 402 |
# File 'lib/git/base.rb', line 400 def merge(branch, = 'merge', opts = {}) self.lib.merge(branch, , opts) end |
#merge_base(*args) ⇒ Array<Git::Object::Commit>
Find as good common ancestors as possible for a merge example: g.merge_base('master', 'some_branch', 'some_sha', octopus: true)
717 718 719 720 |
# File 'lib/git/base.rb', line 717 def merge_base(*args) shas = self.lib.merge_base(*args) shas.map { |sha| gcommit(sha) } end |
#object(objectish) ⇒ Git::Object
returns a Git::Object of the appropriate type you can also call @git.gtree('tree'), but that's just for readability. If you call @git.gtree('HEAD') it will still return a Git::Object::Commit object.
object calls a method that will run a rev-parse on the objectish and determine the type of the object and return an appropriate object for that type
694 695 696 |
# File 'lib/git/base.rb', line 694 def object(objectish) Git::Object.new(self, objectish) end |
#pull(remote = nil, branch = nil, opts = {}) ⇒ Void
Pulls the given branch from the given remote into the current branch
428 429 430 |
# File 'lib/git/base.rb', line 428 def pull(remote = nil, branch = nil, opts = {}) self.lib.pull(remote, branch, opts) end |
#push(remote = nil, branch = nil, options = {}) ⇒ Void
Push changes to a remote repository
393 394 395 |
# File 'lib/git/base.rb', line 393 def push(*args, **) self.lib.push(*args, **) end |
#read_tree(treeish, opts = {})
566 567 568 |
# File 'lib/git/base.rb', line 566 def read_tree(treeish, opts = {}) self.lib.read_tree(treeish, opts) end |
#remote(remote_name = 'origin') ⇒ Git::Remote
Returns a remote of the specified name.
699 700 701 |
# File 'lib/git/base.rb', line 699 def remote(remote_name = 'origin') Git::Remote.new(self, remote_name) end |
#remotes
returns an array of Git:Remote objects
433 434 435 |
# File 'lib/git/base.rb', line 433 def remotes self.lib.remotes.map { |r| Git::Remote.new(self, r) } end |
#remove_remote(name)
removes a remote from this repository
@git.remove_remote('scott_git')
467 468 469 |
# File 'lib/git/base.rb', line 467 def remove_remote(name) self.lib.remote_remove(name) end |
#repack
repacks the repository
510 511 512 |
# File 'lib/git/base.rb', line 510 def repack self.lib.repack end |
#repo
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
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 = {})
resets the working directory to the provided commitish
285 286 287 |
# File 'lib/git/base.rb', line 285 def reset(commitish = nil, opts = {}) self.lib.reset(commitish, opts) end |
#reset_hard(commitish = nil, opts = {})
resets the working directory to the commitish with '--hard'
290 291 292 293 |
# File 'lib/git/base.rb', line 290 def reset_hard(commitish = nil, opts = {}) opts = {:hard => true}.merge(opts) self.lib.reset(commitish, opts) end |
#revert(commitish = nil, opts = {})
reverts the working directory to the provided commitish. Accepts a range, such as comittish..HEAD
options: :no_edit
331 332 333 |
# File 'lib/git/base.rb', line 331 def revert(commitish = nil, opts = {}) self.lib.revert(commitish, opts) end |
#revparse(objectish)
runs git rev-parse to convert the objectish to a full sha
615 616 617 |
# File 'lib/git/base.rb', line 615 def revparse(objectish) self.lib.revparse(objectish) end |
#rm(path = '.', opts = {}) Also known as: remove
removes file(s) from the git repository
278 279 280 |
# File 'lib/git/base.rb', line 278 def rm(path = '.', opts = {}) self.lib.rm(path, opts) end |
#set_index(index_file, check = true)
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)
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')
458 459 460 461 462 |
# File 'lib/git/base.rb', line 458 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)
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
533 534 535 |
# File 'lib/git/base.rb', line 533 def show(objectish=nil, path=nil) self.lib.show(objectish, path) end |
#status ⇒ Git::Status
Returns a status object.
704 705 706 |
# File 'lib/git/base.rb', line 704 def status Git::Status.new(self) end |
#tag(tag_name) ⇒ Git::Object::Tag
Returns a tag object.
709 710 711 |
# File 'lib/git/base.rb', line 709 def tag(tag_name) Git::Object.new(self, tag_name, 'tag', true) end |
#tags
returns an array of all Git::Tag objects for this repository
472 473 474 |
# File 'lib/git/base.rb', line 472 def self.lib..map { |r| tag(r) } end |
#update_ref(branch, commit)
579 580 581 |
# File 'lib/git/base.rb', line 579 def update_ref(branch, commit) branch(branch).update_ref(commit) end |
#with_index(new_index)
LOWER LEVEL INDEX OPERATIONS ##
539 540 541 542 543 544 545 |
# File 'lib/git/base.rb', line 539 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)
547 548 549 550 551 552 553 554 555 556 557 558 559 560 |
# File 'lib/git/base.rb', line 547 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)
599 600 601 602 603 604 605 606 |
# File 'lib/git/base.rb', line 599 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)
:yields: the Git::WorkingDirectory
588 589 590 591 592 593 594 595 596 597 |
# File 'lib/git/base.rb', line 588 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 |
#worktree(dir, commitish = nil)
returns a Git::Worktree object for dir, commitish
644 645 646 |
# File 'lib/git/base.rb', line 644 def worktree(dir, commitish = nil) Git::Worktree.new(self, dir, commitish) end |
#worktrees
returns a Git::worktrees object of all the Git::Worktrees objects for this repo
650 651 652 |
# File 'lib/git/base.rb', line 650 def worktrees Git::Worktrees.new(self) end |
#write_and_commit_tree(opts = {})
574 575 576 577 |
# File 'lib/git/base.rb', line 574 def write_and_commit_tree(opts = {}) tree = write_tree commit_tree(tree, opts) end |
#write_tree
570 571 572 |
# File 'lib/git/base.rb', line 570 def write_tree self.lib.write_tree end |