aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Pfeifer2013-07-11 05:09:30 (EDT)
committerMatthias Sohn2013-11-01 18:43:59 (EDT)
commitda9db6b20c6203dae3f828adbd14218ea063ad91 (patch)
tree06ec080660e1bed2266a756059d1bf1f035a787d
parentbaab84836ab8ed0ebd6a57dae991607b0c24039b (diff)
downloadjgit-da9db6b20c6203dae3f828adbd14218ea063ad91.zip
jgit-da9db6b20c6203dae3f828adbd14218ea063ad91.tar.gz
jgit-da9db6b20c6203dae3f828adbd14218ea063ad91.tar.bz2
Enable to prepare interactive rebase and then start it explicitlyrefs/changes/55/16755/6
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>
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java43
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseResult.java15
2 files changed, 56 insertions, 2 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java
index b8cbb9f..e7c31da 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java
@@ -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;
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseResult.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseResult.java
index 5965557..ff18adc 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseResult.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseResult.java
@@ -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;