diff --git a/lib/git/lib.rb b/lib/git/lib.rb index 47886776..b76285ba 100644 --- a/lib/git/lib.rb +++ b/lib/git/lib.rb @@ -139,8 +139,10 @@ def process_commit_data(data, sha = nil, indent = 4) data.each do |line| line = line.chomp - if line == '' + if line == '' and hsh_array in_message = !in_message + elsif line == '' and !hsh_array and !in_message + in_message = true elsif in_message hsh['message'] << line[indent..-1] << "\n" else diff --git a/tests/files/working.git/objects/32/77d9f9880e662bf701c7f42a50db6e5053b001 b/tests/files/working.git/objects/32/77d9f9880e662bf701c7f42a50db6e5053b001 new file mode 100644 index 00000000..a4bae240 Binary files /dev/null and b/tests/files/working.git/objects/32/77d9f9880e662bf701c7f42a50db6e5053b001 differ diff --git a/tests/files/working.git/refs/heads/test_empty_lines b/tests/files/working.git/refs/heads/test_empty_lines new file mode 100644 index 00000000..ddd5e5fc --- /dev/null +++ b/tests/files/working.git/refs/heads/test_empty_lines @@ -0,0 +1 @@ +3277d9f9880e662bf701c7f42a50db6e5053b001 diff --git a/tests/files/working/dot_git/objects/32/77d9f9880e662bf701c7f42a50db6e5053b001 b/tests/files/working/dot_git/objects/32/77d9f9880e662bf701c7f42a50db6e5053b001 new file mode 100644 index 00000000..a4bae240 Binary files /dev/null and b/tests/files/working/dot_git/objects/32/77d9f9880e662bf701c7f42a50db6e5053b001 differ diff --git a/tests/files/working/dot_git/refs/heads/test_empty_lines b/tests/files/working/dot_git/refs/heads/test_empty_lines new file mode 100644 index 00000000..ddd5e5fc --- /dev/null +++ b/tests/files/working/dot_git/refs/heads/test_empty_lines @@ -0,0 +1 @@ +3277d9f9880e662bf701c7f42a50db6e5053b001 diff --git a/tests/units/test_object.rb b/tests/units/test_object.rb index c115355c..fea2625f 100644 --- a/tests/units/test_object.rb +++ b/tests/units/test_object.rb @@ -48,7 +48,12 @@ def test_commit_contents assert_equal('tree 94c827875e2cadb8bc8d4cdd900f19aa9e8634c7', o.contents_array[0]) assert_equal('parent 546bec6f8872efa41d5d97a369f669165ecda0de', o.contents_array[1]) end - + + def test_commit_multiline + o = @git.gcommit('3277d9f9880e662bf701c7f42a50db6e5053b001') + assert_equal("test-empty-lines\n\n1\n2\n\n3\n4", o.message) + end + def test_object_to_s assert_equal('1cc8667014381e2788a94777532a788307f38d26', @commit.sha) assert_equal('94c827875e2cadb8bc8d4cdd900f19aa9e8634c7', @tree.sha)