git p4: clone --branch should checkout master
authorPete Wyckoff <pw@padd.com>
Tue, 15 Jan 2013 00:47:01 +0000 (19:47 -0500)
committerJunio C Hamano <gitster@pobox.com>
Tue, 15 Jan 2013 17:46:29 +0000 (09:46 -0800)
When using the --branch argument to "git p4 clone", one
might specify a destination for p4 changes different from
the default refs/remotes/p4/master.  Both cases should
create a master branch and checkout files.

Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-p4.txt
git-p4.py
t/t9806-git-p4-options.sh

index beff6229c8cc4541ca3a8ddd0faf724fceb439e7..2623bee5fcf33ff0af79a71c3abdf29cc6542bab 100644 (file)
@@ -174,8 +174,7 @@ subsequent 'sync' operations.
 --branch <branch>::
        Import changes into given branch.  If the branch starts with
        'refs/', it will be used as is, otherwise the path 'refs/heads/'
-       will be prepended.  The default branch is 'master'.  If used
-       with an initial clone, no HEAD will be checked out.
+       will be prepended.  The default branch is 'p4/master'.
 +
 This example imports a new remote "p4/proj2" into an existing
 git repository:
index 7a0c0409bebf0d8894293c2f76ab8d22b8332cb3..c59ad9303488066ae11286388def4f51296f3155 100755 (executable)
--- a/git-p4.py
+++ b/git-p4.py
@@ -3118,17 +3118,15 @@ class P4Clone(P4Sync):
 
         if not P4Sync.run(self, depotPaths):
             return False
-        if self.branch != "master":
-            if self.importIntoRemotes:
-                masterbranch = "refs/remotes/p4/master"
-            else:
-                masterbranch = "refs/heads/p4/master"
-            if gitBranchExists(masterbranch):
-                system("git branch master %s" % masterbranch)
-                if not self.cloneBare:
-                    system("git checkout -f")
-            else:
-                print "Could not detect main branch. No checkout/master branch created."
+
+        # create a master branch and check out a work tree
+        if gitBranchExists(self.branch):
+            system([ "git", "branch", "master", self.branch ])
+            if not self.cloneBare:
+                system([ "git", "checkout", "-f" ])
+        else:
+            print 'Not checking out any branch, use ' \
+                  '"git checkout -q -b master <branch>"'
 
         # auto-set this variable if invoked with --use-client-spec
         if self.useClientSpec_from_options:
index 4900aef19e69a6f568d08e7b24fde20b1960ec32..2ad3a3e0ca21c467e400536165a324d309ec66d0 100755 (executable)
@@ -27,7 +27,7 @@ test_expect_success 'clone no --git-dir' '
        test_must_fail git p4 clone --git-dir=xx //depot
 '
 
-test_expect_failure 'clone --branch should checkout master' '
+test_expect_success 'clone --branch should checkout master' '
        git p4 clone --branch=refs/remotes/p4/sb --dest="$git" //depot &&
        test_when_finished cleanup_git &&
        (