Browse Source

Add additional RebaseResult for editing commits

With the new RebaseResult.EDIT a client can now distinguish if rebase
stopped due to a conflict or because the commit was marked for edit in
an interactive rebase.

Change-Id: I40f2311cf43ed5f290dcda65a7bd85ba770a85f5
Signed-off-by: Stefan Lay <stefan.lay@sap.com>
stable-3.2
Stefan Lay 11 years ago committed by Matthias Sohn
parent
commit
cce2561e9f
  1. 2
      org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java
  2. 13
      org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java
  3. 14
      org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseResult.java

2
org.eclipse.jgit.test/tst/org/eclipse/jgit/api/RebaseCommandTest.java

@ -1941,7 +1941,7 @@ public class RebaseCommandTest extends RepositoryTestCase {
return ""; // not used
}
}).call();
assertEquals(Status.STOPPED, res.getStatus());
assertEquals(Status.EDIT, res.getStatus());
RevCommit toBeEditted = git.log().call().iterator().next();
assertEquals("updated file1 on master", toBeEditted.getFullMessage());

13
org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java

@ -302,7 +302,7 @@ public class RebaseCommand extends GitCommand<RebaseResult> {
RevCommit commitToPick = walk
.parseCommit(ids.iterator().next());
if (monitor.isCancelled())
return new RebaseResult(commitToPick);
return new RebaseResult(commitToPick, Status.STOPPED);
try {
monitor.beginTask(MessageFormat.format(
JGitText.get().applyingCommit,
@ -328,9 +328,9 @@ public class RebaseCommand extends GitCommand<RebaseResult> {
return abort(new RebaseResult(
cherryPickResult.getFailingPaths()));
else
return stop(commitToPick);
return stop(commitToPick, Status.STOPPED);
case CONFLICTING:
return stop(commitToPick);
return stop(commitToPick, Status.STOPPED);
case OK:
newHead = cherryPickResult.getNewHead();
}
@ -348,7 +348,7 @@ public class RebaseCommand extends GitCommand<RebaseResult> {
continue;
case EDIT:
rebaseState.createFile(AMEND, commitToPick.name());
return stop(commitToPick);
return stop(commitToPick, Status.EDIT);
case COMMENT:
break;
case SQUASH:
@ -673,7 +673,8 @@ public class RebaseCommand extends GitCommand<RebaseResult> {
return parseAuthor(raw);
}
private RebaseResult stop(RevCommit commitToPick) throws IOException {
private RebaseResult stop(RevCommit commitToPick, RebaseResult.Status status)
throws IOException {
PersonIdent author = commitToPick.getAuthorIdent();
String authorScript = toAuthorScript(author);
rebaseState.createFile(AUTHOR_SCRIPT, authorScript);
@ -691,7 +692,7 @@ public class RebaseCommand extends GitCommand<RebaseResult> {
// Remove cherry pick state file created by CherryPickCommand, it's not
// needed for rebase
repo.writeCherryPickHead(null);
return new RebaseResult(commitToPick);
return new RebaseResult(commitToPick, status);
}
String toAuthorScript(PersonIdent author) {

14
org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseResult.java

@ -84,6 +84,15 @@ public class RebaseResult {
return false;
}
},
/**
* Stopped for editing in the context of an interactive rebase
*/
EDIT {
@Override
public boolean isSuccessful() {
return false;
}
},
/**
* Failed; the original HEAD was restored
*/
@ -183,9 +192,10 @@ public class RebaseResult {
*
* @param commit
* current commit
* @param status
*/
RebaseResult(RevCommit commit) {
status = Status.STOPPED;
RebaseResult(RevCommit commit, RebaseResult.Status status) {
this.status = status;
currentCommit = commit;
}

Loading…
Cancel
Save