diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/ReflogReaderTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/ReflogReaderTest.java index 64333fc75..24c6aebaf 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/ReflogReaderTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/ReflogReaderTest.java @@ -83,6 +83,9 @@ public class ReflogReaderTest extends SampleDataRepositoryTestCase { static byte[] headLine = "3333333333333333333333333333333333333333 3e7549db262d1e836d9bf0af7e22355468f1717c A U Thor 1243028201 -0100\tbranch: change to HEAD\n" .getBytes(); + static byte[] oneLineWithoutComment = "da85355dfc525c9f6f3927b876f379f46ccf826e 3e7549db262d1e836d9bf0af7e22355468f1717c A O Thor Too 1243028200 +0200\n" + .getBytes(); + @Test public void testReadOneLine() throws Exception { setupReflog("logs/refs/heads/master", oneLine); @@ -184,6 +187,25 @@ public class ReflogReaderTest extends SampleDataRepositoryTestCase { .getLastEntry().getComment()); } + @Test + public void testReadLineWithMissingComment() throws Exception { + setupReflog("logs/refs/heads/master", oneLineWithoutComment); + final ReflogReader reader = db.getReflogReader("master"); + Entry e = reader.getLastEntry(); + assertEquals(ObjectId + .fromString("da85355dfc525c9f6f3927b876f379f46ccf826e"), e + .getOldId()); + assertEquals(ObjectId + .fromString("3e7549db262d1e836d9bf0af7e22355468f1717c"), e + .getNewId()); + assertEquals("A O Thor Too", e.getWho().getName()); + assertEquals("authortoo@wri.tr", e.getWho().getEmailAddress()); + assertEquals(120, e.getWho().getTimeZoneOffset()); + assertEquals("2009-05-22T23:36:40", iso(e.getWho())); + assertEquals("", + e.getComment()); + } + @Test public void testNoLog() throws Exception { assertEquals(0, db.getReflogReader("master").getReverseEntries().size()); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ReflogReader.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ReflogReader.java index 75214308d..ea2f73895 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ReflogReader.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ReflogReader.java @@ -88,18 +88,13 @@ public class ReflogReader { JGitText.get().rawLogMessageDoesNotParseAsLogEntry); } who = RawParseUtils.parsePersonIdentOnly(raw, pos); - int p0 = RawParseUtils.next(raw, pos, '\t'); // personident has no - // \t - if (p0 == -1) { - throw new IllegalArgumentException( - JGitText.get().rawLogMessageDoesNotParseAsLogEntry); - } - int p1 = RawParseUtils.nextLF(raw, p0); - if (p1 == -1) { - throw new IllegalArgumentException( - JGitText.get().rawLogMessageDoesNotParseAsLogEntry); + int p0 = RawParseUtils.next(raw, pos, '\t'); + if (p0 >= raw.length) + comment = ""; // personident has no \t, no comment present + else { + int p1 = RawParseUtils.nextLF(raw, p0); + comment = p1 > p0 ? RawParseUtils.decode(raw, p0, p1 - 1) : ""; } - comment = RawParseUtils.decode(raw, p0, p1 - 1); } /**