diff options
author | RĂ¼diger Herrmann <ruediger.herrmann@gmx.de> | 2015-01-31 00:09:27 +0100 |
---|---|---|
committer | Matthias Sohn <matthias.sohn@sap.com> | 2015-02-04 13:35:32 +0100 |
commit | fc801dd79f7c6eb3765e4652136f219480478bf6 (patch) | |
tree | e79b6c19661392cad7c985199bcf7d804536afe1 | |
parent | 3c2b4086b61798ad8c48536d34b5abe922567ad7 (diff) | |
download | jgit-fc801dd79f7c6eb3765e4652136f219480478bf6.tar.gz jgit-fc801dd79f7c6eb3765e4652136f219480478bf6.zip |
Add option --orphan for checkout
Change-Id: I546a93f3e147d8d6fc70094b22679c0d11cd8921
Signed-off-by: RĂ¼diger Herrmann <ruediger.herrmann@gmx.de>
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, |