aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java')
-rw-r--r--org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java55
1 files changed, 55 insertions, 0 deletions
diff --git a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java
index 8549118ab2..479ac7e5cf 100644
--- a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java
+++ b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java
@@ -479,6 +479,61 @@ public class TestRepository<R extends Repository> {
}
/**
+ * Soft-reset HEAD to a detached state.
+ * <p>
+ * @param id
+ * ID of detached head.
+ * @throws Exception
+ * @see #reset(String)
+ */
+ public void reset(AnyObjectId id) throws Exception {
+ RefUpdate ru = db.updateRef(Constants.HEAD, true);
+ ru.setNewObjectId(id);
+ RefUpdate.Result result = ru.forceUpdate();
+ switch (result) {
+ case FAST_FORWARD:
+ case FORCED:
+ case NEW:
+ case NO_CHANGE:
+ break;
+ default:
+ throw new IOException(String.format(
+ "Checkout \"%s\" failed: %s", id.name(), result));
+ }
+ }
+
+ /**
+ * Soft-reset HEAD to a different commit.
+ * <p>
+ * This is equivalent to {@code git reset --soft} in that it modifies HEAD but
+ * not the index or the working tree of a non-bare repository.
+ *
+ * @param name
+ * revision string; either an existing ref name, or something that
+ * can be parsed to an object ID.
+ * @throws Exception
+ */
+ public void reset(String name) throws Exception {
+ RefUpdate.Result result;
+ ObjectId id = db.resolve(name);
+ if (id == null)
+ throw new IOException("Not a revision: " + name);
+ RefUpdate ru = db.updateRef(Constants.HEAD, false);
+ ru.setNewObjectId(id);
+ result = ru.forceUpdate();
+ switch (result) {
+ case FAST_FORWARD:
+ case FORCED:
+ case NEW:
+ case NO_CHANGE:
+ break;
+ default:
+ throw new IOException(String.format(
+ "Checkout \"%s\" failed: %s", name, result));
+ }
+ }
+
+ /**
* Update the dumb client server info files.
*
* @throws Exception