import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
+import java.util.List;
import org.eclipse.jgit.api.MergeResult.MergeStatus;
import org.eclipse.jgit.api.RebaseCommand.Action;
import org.eclipse.jgit.api.RebaseCommand.Operation;
+import org.eclipse.jgit.api.RebaseCommand.Step;
import org.eclipse.jgit.api.RebaseResult.Status;
import org.eclipse.jgit.api.errors.JGitInternalException;
import org.eclipse.jgit.api.errors.RefNotFoundException;
private int countPicks() throws IOException {
int count = 0;
- File todoFile = new File(db.getDirectory(),
- "rebase-merge/git-rebase-todo");
+ File todoFile = getTodoFile();
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(todoFile), "UTF-8"));
try {
assertEquals(RepositoryState.SAFE, git.getRepository()
.getRepositoryState());
}
+
+ @Test
+ public void testRebaseShouldBeAbleToHandleEmptyLinesInRebaseTodoFile()
+ throws IOException {
+ String emptyLine = "\n";
+ String todo = "pick 1111111 Commit 1\n" + emptyLine
+ + "pick 2222222 Commit 2\n" + emptyLine
+ + "# Comment line at end\n";
+ write(getTodoFile(), todo);
+
+ RebaseCommand rebaseCommand = git.rebase();
+ List<Step> steps = rebaseCommand.loadSteps();
+ assertEquals(2, steps.size());
+ assertEquals("1111111", steps.get(0).commit.name());
+ assertEquals("2222222", steps.get(1).commit.name());
+ }
+
+ private File getTodoFile() {
+ File todoFile = new File(db.getDirectory(),
+ "rebase-merge/git-rebase-todo");
+ return todoFile;
+ }
}
return true;
}
- private List<Step> loadSteps() throws IOException {
+ List<Step> loadSteps() throws IOException {
byte[] buf = IO.readFully(new File(rebaseDir, GIT_REBASE_TODO));
int ptr = 0;
int tokenBegin = 0;
while (ptr < buf.length) {
tokenBegin = ptr;
ptr = RawParseUtils.nextLF(buf, ptr);
- int nextSpace = 0;
+ int nextSpace = RawParseUtils.next(buf, tokenBegin, ' ');
int tokenCount = 0;
Step current = null;
while (tokenCount < 3 && nextSpace < ptr) {
switch (tokenCount) {
case 0:
- nextSpace = RawParseUtils.next(buf, tokenBegin, ' ');
String actionToken = new String(buf, tokenBegin, nextSpace
- tokenBegin - 1);
tokenBegin = nextSpace;