diff options
-rw-r--r-- | README | 18 | ||||
-rw-r--r-- | lib/git.rb | 3 | ||||
-rw-r--r-- | lib/git/base.rb | 12 | ||||
-rw-r--r-- | lib/git/branch.rb | 11 | ||||
-rw-r--r-- | lib/git/branches.rb | 16 | ||||
-rw-r--r-- | lib/git/lib.rb | 12 | ||||
-rw-r--r-- | lib/git/repository.rb | 1 | ||||
-rw-r--r-- | tests/units/test_object.rb | 26 |
8 files changed, 75 insertions, 24 deletions
@@ -42,14 +42,14 @@ g.log.between('v2.5', 'v2.6') g.log.since('v2.5').file('Makefile') g.log.each {|l| puts l.sha } -********** - - g.object('HEAD^').to_s # git show / git rev-parse +g.object('HEAD^').contents +g.object('v2.5:Makefile').size +g.object('v2.5:Makefile').sha -g.rev_parse('HEAD^') -g.rev_parse('v2.5:Makefile') # returns Git::Object +g.revparse('v2.5:Makefile') +********** g.file('flim/ChangeLog').tags.each {|tag,rev| p [tag,rev.to_s]} g.file('flim/ChangeLog').logs.each { |log| log.sha } @@ -60,12 +60,10 @@ g.branches.remote g.status -g.tag # returns array of Git::Tag objects - - g.grep('hello') g.grep('hello', Git::Tag) + g.ls_files g.ls_files(:stage => true) @@ -76,9 +74,7 @@ g.diff("commit1..commit2") g.diff_tree(Git::Tree, Git::Tree) - -c = Git::Commit.new("HEAD^^") -c = Git::Commit.new("394839") +g.tag # returns array of Git::Tag objects # needs write permission @@ -15,6 +15,8 @@ require 'git/working_directory' require 'git/log' require 'git/object' +require 'git/branch' + =begin @@ -25,7 +27,6 @@ require 'git/file' require 'git/sha' require 'git/diff' -require 'git/branch' require 'git/remote' =end diff --git a/lib/git/base.rb b/lib/git/base.rb index 3c10389..d552432 100644 --- a/lib/git/base.rb +++ b/lib/git/base.rb @@ -59,10 +59,20 @@ module Git Git::Log.new(self, count) end + def branches + Git::Branches.new(self) + end + def lib Git::Lib.new(self) end - + + # convenience methods + + def revparse(objectish) + self.lib.revparse(objectish) + end + end end
\ No newline at end of file diff --git a/lib/git/branch.rb b/lib/git/branch.rb new file mode 100644 index 0000000..8f8953b --- /dev/null +++ b/lib/git/branch.rb @@ -0,0 +1,11 @@ +module Git + class Branch < Path + + @base = nil + + def initialize(base, name) + @base = base + end + + end +end diff --git a/lib/git/branches.rb b/lib/git/branches.rb new file mode 100644 index 0000000..d664d59 --- /dev/null +++ b/lib/git/branches.rb @@ -0,0 +1,16 @@ +module Git + + # object that holds all the available branches + class Branches + include Enumerable + + @base = nil + @branches = nil + + def initialize(base) + @base = base + @branches = @base.lib.branches_all + end + + end +end
\ No newline at end of file diff --git a/lib/git/lib.rb b/lib/git/lib.rb index 681ba58..c83ecaa 100644 --- a/lib/git/lib.rb +++ b/lib/git/lib.rb @@ -18,7 +18,7 @@ module Git arr_opts << "#{opts[:between][0]}..#{opts[:between][1].to_s}" if (opts[:between] && opts[:between].size == 2) arr_opts << opts[:file] if opts[:file].is_a? String - command('log', arr_opts).split("\n").map { |l| Git::Object::Commit.new(@base, l.split.first) } + command_lines('log', arr_opts).map { |l| Git::Object::Commit.new(@base, l.split.first) } end def revparse(string) @@ -30,15 +30,23 @@ module Git end def object_size(sha) - command('cat-file', ['-s', sha]) + command('cat-file', ['-s', sha]).to_i end def object_contents(sha) command('cat-file', ['-p', sha]) end + + def branches_all + command_lines('branch', '-a').map { |l| Git::Branch.new(@base, l) } + end private + def command_lines(cmd, opts) + command(cmd, opts).split("\n") + end + def command(cmd, opts) ENV['GIT_DIR'] = @base.repo.path ENV['GIT_INDEX_FILE'] = @base.index.path diff --git a/lib/git/repository.rb b/lib/git/repository.rb index d76dc8b..7e61167 100644 --- a/lib/git/repository.rb +++ b/lib/git/repository.rb @@ -1,5 +1,4 @@ module Git class Repository < Path - end end diff --git a/tests/units/test_object.rb b/tests/units/test_object.rb index b535be7..44bfc57 100644 --- a/tests/units/test_object.rb +++ b/tests/units/test_object.rb @@ -6,6 +6,10 @@ class TestObject < Test::Unit::TestCase def setup set_file_paths @git = Git.open(@wdir) + + @commit = @git.object('1cc8667014381') + @tree = @git.object('1cc8667014381^{tree}') + @blob = @git.object('v2.5:example.txt') end def test_commit @@ -28,14 +32,15 @@ class TestObject < Test::Unit::TestCase end def test_object_to_s - o = @git.object('1cc8667014381') - assert_equal('commit 1cc8667014381e2788a94777532a788307f38d26', o.to_s) - - o = @git.object('1cc8667014381^{tree}') - assert_equal('tree 94c827875e2cadb8bc8d4cdd900f19aa9e8634c7', o.to_s) - - o = @git.object('v2.5:example.txt') - assert_equal('blob ba492c62b6227d7f3507b4dcc6e6d5f13790eabf', o.to_s) + assert_equal('commit 1cc8667014381e2788a94777532a788307f38d26', @commit.to_s) + assert_equal('tree 94c827875e2cadb8bc8d4cdd900f19aa9e8634c7', @tree.to_s) + assert_equal('blob ba492c62b6227d7f3507b4dcc6e6d5f13790eabf', @blob.to_s) + end + + def test_object_size + assert_equal(265, @commit.size) + assert_equal(72, @tree.size) + assert_equal(128, @blob.size) end def test_tree @@ -66,4 +71,9 @@ class TestObject < Test::Unit::TestCase assert_equal('replace with new text', o.contents) end + def test_revparse + sha = @git.revparse('v2.6:example.txt') + assert_equal('1f09f2edb9c0d9275d15960771b363ca6940fbe3', sha) + end + end
\ No newline at end of file |