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>
This commit is contained in:
Stefan Lay 2013-10-22 16:01:18 +02:00 committed by Matthias Sohn
parent 765896febb
commit cce2561e9f
3 changed files with 20 additions and 9 deletions

View File

@ -1941,7 +1941,7 @@ public String modifyCommitMessage(String commit) {
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());

View File

@ -302,7 +302,7 @@ public RebaseResult call() throws GitAPIException, NoHeadException,
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 RebaseResult call() throws GitAPIException, NoHeadException,
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 RebaseResult call() throws GitAPIException, NoHeadException,
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 @@ private PersonIdent parseAuthor() throws IOException {
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 @@ private RebaseResult stop(RevCommit commitToPick) throws IOException {
// 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) {

View File

@ -84,6 +84,15 @@ public boolean isSuccessful() {
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 @@ private RebaseResult(Status status) {
*
* @param commit
* current commit
* @param status
*/
RebaseResult(RevCommit commit) {
status = Status.STOPPED;
RebaseResult(RevCommit commit, RebaseResult.Status status) {
this.status = status;
currentCommit = commit;
}