Browse Source

Enable to prepare interactive rebase and then start it explicitly

Add Operation.PROCESS_STEPS to RebaseCommand to enable starting
interactive rebase explicitly after rebase steps have been configured.

Change-Id: I2d6f0de82010ea6523fbce6fb4501e847bdcdddc
Signed-off-by: Tobias Pfeifer <to.pfeifer@web.de>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
tags/v3.2.0.201311130903-m3
Tobias Pfeifer 10 years ago
parent
commit
da9db6b20c

+ 42
- 1
org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java View File

@@ -166,7 +166,11 @@ public class RebaseCommand extends GitCommand<RebaseResult> {
/**
* Aborts and resets the current rebase
*/
ABORT;
ABORT,
/**
* Starts processing steps
*/
PROCESS_STEPS;
}

private Operation operation = Operation.BEGIN;
@@ -183,6 +187,8 @@ public class RebaseCommand extends GitCommand<RebaseResult> {

private InteractiveHandler interactiveHandler;

private boolean stopAfterInitialization = false;

/**
* @param repo
*/
@@ -218,6 +224,8 @@ public class RebaseCommand extends GitCommand<RebaseResult> {
} catch (IOException ioe) {
throw new JGitInternalException(ioe.getMessage(), ioe);
}
case PROCESS_STEPS:
// fall through
case SKIP:
// fall through
case CONTINUE:
@@ -234,6 +242,8 @@ public class RebaseCommand extends GitCommand<RebaseResult> {
break;
case BEGIN:
RebaseResult res = initFilesAndRewind();
if (stopAfterInitialization)
return RebaseResult.INTERACTIVE_PREPARED_RESULT;
if (res != null)
return res;
}
@@ -709,6 +719,12 @@ public class RebaseCommand extends GitCommand<RebaseResult> {
}

private void checkParameters() throws WrongRepositoryStateException {
if (this.operation == Operation.PROCESS_STEPS) {
if (rebaseState.getFile(DONE).exists())
throw new WrongRepositoryStateException(MessageFormat.format(
JGitText.get().wrongRepositoryState, repo
.getRepositoryState().name()));
}
if (this.operation != Operation.BEGIN) {
// these operations are only possible while in a rebasing state
switch (repo.getRepositoryState()) {
@@ -923,11 +939,36 @@ public class RebaseCommand extends GitCommand<RebaseResult> {

/**
* Enables interactive rebase
* <p>
* Does not stop after initialization of interactive rebase. This is
* equivalent to
* {@link RebaseCommand#runInteractively(InteractiveHandler, boolean)
* runInteractively(handler, false)};
* </p>
*
* @param handler
* @return this
*/
public RebaseCommand runInteractively(InteractiveHandler handler) {
return runInteractively(handler, false);
}

/**
* Enables interactive rebase
* <p>
* If stopAfterRebaseInteractiveInitialization is {@code true} the rebase
* stops after initialization of interactive rebase returning
* {@link RebaseResult#INTERACTIVE_PREPARED_RESULT}
* </p>
*
* @param handler
* @param stopAfterRebaseInteractiveInitialization
* if {@code true} the rebase stops after initialization
* @return this instance
*/
public RebaseCommand runInteractively(InteractiveHandler handler,
final boolean stopAfterRebaseInteractiveInitialization) {
this.stopAfterInitialization = stopAfterRebaseInteractiveInitialization;
this.interactiveHandler = handler;
return this;
}

+ 14
- 1
org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseResult.java View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2010, Mathias Kinzler <mathias.kinzler@sap.com>
* Copyright (C) 2010, 2013, Mathias Kinzler <mathias.kinzler@sap.com>
* and other copyright owners as documented in the project's IP log.
*
* This program and the accompanying materials are made available
@@ -131,6 +131,16 @@ public class RebaseResult {
public boolean isSuccessful() {
return false;
}
},

/**
* Interactive rebase has been prepared
*/
INTERACTIVE_PREPARED {
@Override
public boolean isSuccessful() {
return false;
}
};

/**
@@ -152,6 +162,9 @@ public class RebaseResult {
static final RebaseResult NOTHING_TO_COMMIT_RESULT = new RebaseResult(
Status.NOTHING_TO_COMMIT);

static final RebaseResult INTERACTIVE_PREPARED_RESULT = new RebaseResult(
Status.INTERACTIVE_PREPARED);

private final Status status;

private final RevCommit currentCommit;

Loading…
Cancel
Save