From: RĂ¼diger Herrmann Date: Fri, 30 Jan 2015 23:09:27 +0000 (+0100) Subject: Add option --orphan for checkout X-Git-Tag: v3.7.0.201502260915-r~6 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=fc801dd79f7c6eb3765e4652136f219480478bf6;p=jgit.git Add option --orphan for checkout Change-Id: I546a93f3e147d8d6fc70094b22679c0d11cd8921 Signed-off-by: RĂ¼diger Herrmann --- 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: *
    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 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,