summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRĂ¼diger Herrmann <ruediger.herrmann@gmx.de>2015-01-31 00:09:27 +0100
committerMatthias Sohn <matthias.sohn@sap.com>2015-02-04 13:35:32 +0100
commitfc801dd79f7c6eb3765e4652136f219480478bf6 (patch)
treee79b6c19661392cad7c985199bcf7d804536afe1
parent3c2b4086b61798ad8c48536d34b5abe922567ad7 (diff)
downloadjgit-fc801dd79f7c6eb3765e4652136f219480478bf6.tar.gz
jgit-fc801dd79f7c6eb3765e4652136f219480478bf6.zip
Add option --orphan for checkout
Change-Id: I546a93f3e147d8d6fc70094b22679c0d11cd8921 Signed-off-by: RĂ¼diger Herrmann <ruediger.herrmann@gmx.de>
-rw-r--r--org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/CheckoutTest.java12
-rw-r--r--org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties1
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java9
3 files changed, 19 insertions, 3 deletions
diff --git a/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/CheckoutTest.java b/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/CheckoutTest.java
index 90284736cf..cef9b9e1a6 100644
--- a/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/CheckoutTest.java
+++ b/org.eclipse.jgit.pgm.test/tst/org/eclipse/jgit/pgm/CheckoutTest.java
@@ -188,6 +188,18 @@ public class CheckoutTest extends CLIRepositoryTestCase {
assertEquals("Hello world a", read(fileA));
}
+ @Test
+ public void testCheckoutOrphan() throws Exception {
+ Git git = new Git(db);
+ git.commit().setMessage("initial commit").call();
+
+ assertEquals("Switched to a new branch 'new_branch'",
+ execute("git checkout --orphan new_branch"));
+ assertEquals("refs/heads/new_branch", db.getRef("HEAD").getTarget().getName());
+ RevCommit commit = git.commit().setMessage("orphan commit").call();
+ assertEquals(0, commit.getParentCount());
+ }
+
/**
* Steps:
* <ol>
diff --git a/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties b/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties
index 8a77bf928a..2806f91463 100644
--- a/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties
+++ b/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/internal/CLIText.properties
@@ -345,3 +345,4 @@ usage_updateRemoteRefsFromAnotherRepository=Update remote refs from another repo
usage_useNameInsteadOfOriginToTrackUpstream=use <name> instead of 'origin' to track upstream
usage_checkoutBranchAfterClone=checkout named branch instead of remotes's HEAD
usage_viewCommitHistory=View commit history
+usage_orphan=Create a new orphan branch. The first commit made on this new branch will have no parents amd it will be the root of a new history totally disconnected from other branches and commits. \ No newline at end of file
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java
index 8f911fd924..56d4fcff02 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java
@@ -71,6 +71,9 @@ class Checkout extends TextBuiltin {
@Option(name = "--force", aliases = { "-f" }, usage = "usage_forceCheckout")
private boolean force = false;
+ @Option(name = "--orphan", usage = "usage_orphan")
+ private boolean orphan = false;
+
@Argument(required = true, index = 0, metaVar = "metaVar_name", usage = "usage_checkout")
private String name;
@@ -95,6 +98,7 @@ class Checkout extends TextBuiltin {
command.setCreateBranch(createBranch);
command.setName(name);
command.setForce(force);
+ command.setOrphan(orphan);
}
try {
String oldBranch = db.getBranch();
@@ -107,10 +111,9 @@ class Checkout extends TextBuiltin {
name));
return;
}
- if (createBranch)
+ if (createBranch || orphan)
outw.println(MessageFormat.format(
- CLIText.get().switchedToNewBranch,
- Repository.shortenRefName(ref.getName())));
+ CLIText.get().switchedToNewBranch, name));
else
outw.println(MessageFormat.format(
CLIText.get().switchedToBranch,