From 646304a6e7c3b2c442a0a7db995629e7009c3a14 Mon Sep 17 00:00:00 2001 From: scott Chacon Date: Sun, 11 Nov 2007 17:59:18 -0800 Subject: added documentation and a license file --- doc/classes/Git/Lib.html | 1158 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1158 insertions(+) create mode 100644 doc/classes/Git/Lib.html (limited to 'doc/classes/Git/Lib.html') diff --git a/doc/classes/Git/Lib.html b/doc/classes/Git/Lib.html new file mode 100644 index 0000000..fd3c7b0 --- /dev/null +++ b/doc/classes/Git/Lib.html @@ -0,0 +1,1158 @@ + + + + + + Class: Git::Lib + + + + + + + + + + +
+ + + + + + + + + + + + + + +
ClassGit::Lib
In: + + lib/git/lib.rb + +
+
Parent: + + Object + +
+
+ + +
+ + + +
+ + + +
+ +
+

Methods

+ +
+ add   + branch_current   + branch_delete   + branch_new   + branches_all   + checkout   + clone   + commit   + config_get   + config_list   + config_remote   + config_set   + diff_files   + diff_full   + diff_index   + diff_stats   + fetch   + grep   + init   + log_commits   + ls_files   + merge   + new   + object_contents   + object_size   + object_type   + remote_add   + remote_remove   + remotes   + remove   + repack   + reset   + revparse   + tag   + tag_sha   + tags   +
+
+ +
+ + + + +
+ + + + + + + + + +
+

Public Class methods

+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 13
+    def initialize(base = nil)
+      if base.is_a?(Git::Base)
+        @git_dir = base.repo.path
+        @git_index_file = base.index.path   
+        @git_work_dir = base.dir.path
+      elsif base.is_a?(Hash)
+        @git_dir = base[:repository]
+        @git_index_file = base[:index] 
+        @git_work_dir = base[:working_directory]
+      end
+    end
+
+
+
+
+ +

Public Instance methods

+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 215
+    def add(path = '.')
+      path = path.join(' ') if path.is_a?(Array)
+      command('add', path)
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 96
+    def branch_current
+      branches_all.select { |b| b[1] }.first[0] rescue nil
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 248
+    def branch_delete(branch)
+      command('branch', ['-d', branch])
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 244
+    def branch_new(branch)
+      command('branch', branch)
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 86
+    def branches_all
+      arr = []
+      command_lines('branch', '-a').each do |b| 
+        current = false
+        current = true if b[0, 2] == '* '
+        arr << [b.gsub('* ', '').strip, current]
+      end
+      arr
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 252
+    def checkout(branch, opts = {})
+      arr_opts = []
+      arr_opts << '-f' if opts[:force]
+      arr_opts << branch.to_s
+      
+      command('checkout', arr_opts)
+    end
+
+
+
+
+ +
+ + + + +
+

+tries to clone the given repo +

+

+returns {:repository} (if bare) +

+
+        {:working_directory} otherwise
+
+

+accepts options: +

+
+ :remote - name of remote (rather than 'origin')
+ :bare   - no working directory
+
+

+TODO - make this work with SSH password or auth_key +

+

[Source]

+
+
+# File lib/git/lib.rb, line 40
+    def clone(repository, name, opts = {})
+      @path = opts[:path] || '.'
+      opts[:path] ? clone_dir = File.join(@path, name) : clone_dir = name
+      
+      arr_opts = []
+      arr_opts << "--bare" if opts[:bare]
+      arr_opts << "-o #{opts[:remote]}" if opts[:remote]
+      arr_opts << repository
+      arr_opts << clone_dir
+      
+      command('clone', arr_opts)
+      
+      opts[:bare] ? {:repository => clone_dir} : {:working_directory => clone_dir}
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 230
+    def commit(message, opts = {})
+      arr_opts = ["-m '#{message}'"]
+      arr_opts << '-a' if opts[:add_all]
+      command('commit', arr_opts)
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 196
+    def config_get(name)
+      command('config', ['--get', name])
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 200
+    def config_list
+      hsh = {}
+      command_lines('config', ['--list']).each do |line|
+        (key, value) = line.split('=')
+        hsh[key] = value
+      end
+      hsh
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 187
+    def config_remote(name)
+      hsh = {}
+      command_lines('config', ['--get-regexp', "remote.#{name}"]).each do |line|
+        (key, value) = line.split
+        hsh[key.gsub("remote.#{name}.", '')] = value
+      end
+      hsh
+    end
+
+
+
+
+ +
+ + + + +
+

+WRITE COMMANDS ## +

+

[Source]

+
+
+# File lib/git/lib.rb, line 211
+    def config_set(name, value)
+      command('config', [name, "'#{value}'"])
+    end
+
+
+
+
+ +
+ + + + +
+

+compares the index and the working directory +

+

[Source]

+
+
+# File lib/git/lib.rb, line 153
+    def diff_files
+      hsh = {}
+      command_lines('diff-files').each do |line|
+        (info, file) = line.split("\t")
+        (mode_src, mode_dest, sha_src, sha_dest, type) = info.split
+        hsh[file] = {:path => file, :mode_file => mode_src.to_s[1, 7], :mode_index => mode_dest, 
+                      :sha_file => sha_src, :sha_index => sha_dest, :type => type}
+      end
+      hsh
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 123
+    def diff_full(obj1 = 'HEAD', obj2 = nil, opts = {})
+      diff_opts = ['-p']
+      diff_opts << obj1
+      diff_opts << obj2 if obj2.is_a?(String)
+      diff_opts << ('-- ' + opts[:path_limiter]) if opts[:path_limiter].is_a? String
+      
+      command('diff', diff_opts)
+    end
+
+
+
+
+ +
+ + + + +
+

+compares the index and the repository +

+

[Source]

+
+
+# File lib/git/lib.rb, line 165
+    def diff_index(treeish)
+      hsh = {}
+      command_lines('diff-index', treeish).each do |line|
+        (info, file) = line.split("\t")
+        (mode_src, mode_dest, sha_src, sha_dest, type) = info.split
+        hsh[file] = {:path => file, :mode_repo => mode_src.to_s[1, 7], :mode_index => mode_dest, 
+                      :sha_repo => sha_src, :sha_index => sha_dest, :type => type}
+      end
+      hsh
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 132
+    def diff_stats(obj1 = 'HEAD', obj2 = nil, opts = {})
+      diff_opts = ['--numstat']
+      diff_opts << obj1
+      diff_opts << obj2 if obj2.is_a?(String)
+      diff_opts << ('-- ' + opts[:path_limiter]) if opts[:path_limiter].is_a? String
+      
+      hsh = {:total => {:insertions => 0, :deletions => 0, :lines => 0, :files => 0}, :files => {}}
+      
+      command_lines('diff', diff_opts).each do |file|
+        (insertions, deletions, filename) = file.split("\t")
+        hsh[:total][:insertions] += insertions.to_i
+        hsh[:total][:deletions] += deletions.to_i
+        hsh[:total][:lines] = (hsh[:total][:deletions] + hsh[:total][:insertions])
+        hsh[:total][:files] += 1
+        hsh[:files][filename] = {:insertions => insertions.to_i, :deletions => deletions.to_i}
+      end
+            
+      hsh
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 295
+    def fetch(remote)
+      command('fetch', remote.to_s)
+    end
+
+
+
+
+ +
+ + + + +
+

+returns hash +

+
+
tree-ish
= [[line_no, match], [line_no, match2]] + +
+
tree-ish
= [[line_no, match], [line_no, match2]] + +
+
+

[Source]

+
+
+# File lib/git/lib.rb, line 104
+    def grep(string, opts = {})
+      opts[:object] = 'HEAD' if !opts[:object]
+
+      grep_opts = ['-n']
+      grep_opts << '-i' if opts[:ignore_case]
+      grep_opts << '-v' if opts[:invert_match]
+      grep_opts << "-e '#{string}'"
+      grep_opts << opts[:object] if opts[:object].is_a?(String)
+      grep_opts << ('-- ' + opts[:path_limiter]) if opts[:path_limiter].is_a? String
+      hsh = {}
+      command_lines('grep', grep_opts).each do |line|
+        if m = /(.*)\:(\d+)\:(.*)/.match(line)        
+          hsh[m[1]] ||= []
+          hsh[m[1]] << [m[2].to_i, m[3]] 
+        end
+      end
+      hsh
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 25
+    def init
+      command('init')
+    end
+
+
+
+
+ +
+ + + + +
+

+READ COMMANDS ## +

+

[Source]

+
+
+# File lib/git/lib.rb, line 59
+    def log_commits(opts = {})
+      arr_opts = ['--pretty=oneline']
+      arr_opts << "-#{opts[:count]}" if opts[:count]
+      arr_opts << "--since=\"#{opts[:since]}\"" if opts[:since].is_a? String
+      arr_opts << "#{opts[:between][0]}..#{opts[:between][1].to_s}" if (opts[:between] && opts[:between].size == 2)
+      arr_opts << opts[:object] if opts[:object].is_a? String
+      arr_opts << '-- ' + opts[:path_limiter] if opts[:path_limiter].is_a? String
+      
+      command_lines('log', arr_opts).map { |l| l.split.first }
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 176
+    def ls_files
+      hsh = {}
+      command_lines('ls-files', '--stage').each do |line|
+        (info, file) = line.split("\t")
+        (mode, sha, stage) = info.split
+        hsh[file] = {:path => file, :mode_index => mode, :sha_index => sha, :stage => stage}
+      end
+      hsh
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 260
+    def merge(branch, message = nil)      
+      arr_opts = []
+      arr_opts << ["-m '#{message}'"] if message
+      arr_opts << branch.to_a.join(' ')
+      command('merge', arr_opts)
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 82
+    def object_contents(sha)
+      command('cat-file', ['-p', sha])
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 78
+    def object_size(sha)
+      command('cat-file', ['-s', sha]).to_i
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 74
+    def object_type(sha)
+      command('cat-file', ['-t', sha])
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 267
+    def remote_add(name, url, opts = {})
+      arr_opts = ['add']
+      arr_opts << '-f' if opts[:with_fetch]
+      arr_opts << name
+      arr_opts << url
+      
+      command('remote', arr_opts)
+    end
+
+
+
+
+ +
+ + + + +
+

+this is documented as such, but seems broken for some reason i’ll try +to get around it some other way later +

+

[Source]

+
+
+# File lib/git/lib.rb, line 278
+    def remote_remove(name)
+      command('remote', ['rm', name])
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 282
+    def remotes
+      command_lines('remote')
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 220
+    def remove(path = '.', opts = {})
+      path = path.join(' ') if path.is_a?(Array)
+
+      arr_opts = ['-f']  # overrides the up-to-date check by default
+      arr_opts << ['-r'] if opts[:recursive]
+      arr_opts << path
+
+      command('rm', arr_opts)
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 303
+    def repack
+      command('repack', ['-a', '-d'])
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 236
+    def reset(commit, opts = {})
+      arr_opts = []
+      arr_opts << '--hard' if opts[:hard]
+      arr_opts << commit.to_s if commit
+      command('reset', arr_opts)
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 70
+    def revparse(string)
+      command('rev-parse', string)
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 290
+    def tag(tag)
+      command('tag', tag)
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 299
+    def tag_sha(tag_name)
+      command('show-ref',  ['--tags', '-s', tag_name])
+    end
+
+
+
+
+ +
+ + + + +
+

[Source]

+
+
+# File lib/git/lib.rb, line 286
+    def tags
+      command_lines('tag')
+    end
+
+
+
+
+ + +
+ + +
+ + +
+

[Validate]

+
+ + + \ No newline at end of file -- cgit