deal with empty initial commit

This commit is contained in:
Tom Preston-Werner 2008-02-09 17:59:29 -08:00
Родитель 13d27d5cea
Коммит 59ddc32609
3 изменённых файлов: 24 добавлений и 2 удалений

Просмотреть файл

@ -156,8 +156,12 @@ module Grit
def diffs
if parents.empty?
diff = @repo.git.show({:full_index => true, :pretty => 'raw'}, @id)
diff = diff.sub(/.+?(diff --git a)/m, '\1')
diff = @repo.git.show({:full_index => true, :pretty => 'raw'}, @id)
if diff =~ /diff --git a/
diff = diff.sub(/.+?(diff --git a)/m, '\1')
else
diff = ''
end
Diff.list_from_string(@repo, diff)
else
self.class.diff(@repo, parents.first.id, @id)

6
test/fixtures/show_empty_commit поставляемый Normal file
Просмотреть файл

@ -0,0 +1,6 @@
commit 1e3824339762bd48316fe87bfafc853732d43264
tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904
author Tom Preston-Werner <tom@mojombo.com> 1157392833 +0000
committer Tom Preston-Werner <tom@mojombo.com> 1157392833 +0000
initial directory structure

Просмотреть файл

@ -98,6 +98,18 @@ class TestCommit < Test::Unit::TestCase
assert_equal true, diffs[5].new_file
end
def test_diffs_on_initial_import_with_empty_commit
Git.any_instance.expects(:show).with(
{:full_index => true, :pretty => 'raw'},
'634396b2f541a9f2d58b00be1a07f0c358b999b3'
).returns(fixture('show_empty_commit'))
@c = Commit.create(@r, :id => '634396b2f541a9f2d58b00be1a07f0c358b999b3')
diffs = @c.diffs
assert_equal [], diffs
end
# to_s
def test_to_s