From 4feace2b9ecb90fe591c4317403f6d8e6309287e Mon Sep 17 00:00:00 2001 From: Stefan Lay Date: Thu, 21 Nov 2013 14:46:12 +0100 Subject: [PATCH] Fix parsing Rebase todo lines when commit message is missing Bug: 422253 Change-Id: I9739b16c91d2df31a481360a712d3479a4eeee2e Signed-off-by: Stefan Lay --- .../tst/org/eclipse/jgit/api/RebaseCommandTest.java | 13 +++++++++++++ .../src/org/eclipse/jgit/lib/RebaseTodoFile.java | 2 ++ 2 files changed, 15 insertions(+) diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java index 241d099d1..a3d652b73 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java @@ -1641,6 +1641,19 @@ public void testRebaseShouldBeAbleToHandleEmptyLinesInRebaseTodoFile() assertEquals("2222222", steps.get(1).getCommit().name()); } + @Test + public void testRebaseShouldBeAbleToHandleLinesWithoutCommitMessageInRebaseTodoFile() + throws IOException { + String todo = "pick 1111111 \n" + "pick 2222222 Commit 2\n" + + "# Comment line at end\n"; + write(getTodoFile(), todo); + + List steps = db.readRebaseTodo(GIT_REBASE_TODO, false); + assertEquals(2, steps.size()); + assertEquals("1111111", steps.get(0).getCommit().name()); + assertEquals("2222222", steps.get(1).getCommit().name()); + } + @Test public void testRebaseShouldNotFailIfUserAddCommentLinesInPrepareSteps() throws Exception { diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RebaseTodoFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RebaseTodoFile.java index cac67e11e..ef61e2203 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RebaseTodoFile.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RebaseTodoFile.java @@ -197,6 +197,8 @@ private static RebaseTodoLine parseLine(byte[] buf, int tokenBegin, } tokenCount++; } + if (tokenCount == 2) + return new RebaseTodoLine(action, commit, ""); //$NON-NLS-1$ return null; }