diff options
author | Robin Rosenberg <robin.rosenberg@dewire.com> | 2013-02-13 00:27:52 +0100 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org <gerrit@eclipse.org> | 2013-02-16 10:38:54 -0500 |
commit | 29546877b158d45b3b8b1d8d2a02751db1759798 (patch) | |
tree | 5e3d7ea000f8c5fd2b48fd4e40ce9c3fe5312e02 /org.eclipse.jgit.pgm | |
parent | ae57189712eec3a2c54e8e7839d4e74f7010d16e (diff) | |
download | jgit-29546877b158d45b3b8b1d8d2a02751db1759798.tar.gz jgit-29546877b158d45b3b8b1d8d2a02751db1759798.zip |
Add the --branch flag to the jgit clone command
--branch or -b allows the user to specify which branch to checkout after
clone.
Change-Id: Ie27533e5ecb43097862a8337a27a742b501e17a5
Diffstat (limited to 'org.eclipse.jgit.pgm')
3 files changed, 17 insertions, 2 deletions
diff --git a/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/CLIText.properties b/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/CLIText.properties index 0a4d90b088..f5a0271bf3 100644 --- a/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/CLIText.properties +++ b/org.eclipse.jgit.pgm/resources/org/eclipse/jgit/pgm/CLIText.properties @@ -76,6 +76,7 @@ metaVar_author=AUTHOR metaVar_base=base metaVar_blameL=START,END metaVar_blameReverse=START..END +metaVar_branchName=branch metaVar_bucket=BUCKET metaVar_command=command metaVar_commandDetail=DETAIL @@ -116,6 +117,7 @@ mostCommonlyUsedCommandsAre=The most commonly used commands are: needApprovalToDestroyCurrentRepository=Need approval to destroy current repository noGitRepositoryConfigured=No Git repository configured. noSuchFile=no such file: {0} +noSuchRemoteRef=no such remote ref: ''{0}'' noTREESectionInIndex=no 'TREE' section in index nonFastForward=non-fast forward notABranch={0} is not a branch @@ -274,5 +276,6 @@ usage_symbolicVersionForTheProject=Symbolic version for the project usage_tagMessage=tag message usage_updateRemoteRefsFromAnotherRepository=Update remote refs from another repository 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 warningNoCommitGivenOnCommandLine=warning: No commit given on command line, assuming {0} diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/CLIText.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/CLIText.java index 552629eba1..807fe39db9 100644 --- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/CLIText.java +++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/CLIText.java @@ -180,6 +180,7 @@ public class CLIText extends TranslationBundle { /***/ public String needApprovalToDestroyCurrentRepository; /***/ public String noGitRepositoryConfigured; /***/ public String noSuchFile; + /***/ public String noSuchRemoteRef; /***/ public String noTREESectionInIndex; /***/ public String nonFastForward; /***/ public String notABranch; diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java index 9af0570f31..898203da29 100644 --- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java +++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java @@ -74,6 +74,9 @@ class Clone extends AbstractFetchCommand { @Option(name = "--origin", aliases = { "-o" }, metaVar = "metaVar_remoteName", usage = "usage_useNameInsteadOfOriginToTrackUpstream") private String remoteName = Constants.DEFAULT_REMOTE_NAME; + @Option(name = "--branch", aliases = { "-b" }, metaVar = "metaVar_branchName", usage = "usage_checkoutBranchAfterClone") + private String branch; + @Argument(index = 0, required = true, metaVar = "metaVar_uriish") private String sourceUri; @@ -117,8 +120,16 @@ class Clone extends AbstractFetchCommand { saveRemote(uri); final FetchResult r = runFetch(); - final Ref branch = guessHEAD(r); - doCheckout(branch); + final Ref checkoutRef; + if (branch == null) + checkoutRef = guessHEAD(r); + else { + checkoutRef = r.getAdvertisedRef(Constants.R_HEADS + branch); + if (checkoutRef == null) + throw die(MessageFormat.format(CLIText.get().noSuchRemoteRef, + branch)); + } + doCheckout(checkoutRef); } private void saveRemote(final URIish uri) throws URISyntaxException, |