git-p4: don't use name-rev to get current branch
authorLuke Diamand <luke@diamand.org>
Sat, 15 Apr 2017 10:36:09 +0000 (11:36 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 17 Apr 2017 04:13:26 +0000 (21:13 -0700)
git-p4 was using "git name-rev" to find out the current branch.

That is not safe, since if multiple branches or tags point at
the same revision, the result obtained might not be what is
expected.

Instead use "git symbolic-ref".

Signed-off-by: Luke Diamand <luke@diamand.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-p4.py
t/t9807-git-p4-submit.sh
index 584b817757f85f1f92927b5fca7403e7e4ed7b0a..8d151da91b9699e804f4d28b865af7f44138bfc1 100755 (executable)
--- a/git-p4.py
+++ b/git-p4.py
@@ -602,12 +602,7 @@ def p4Where(depotPath):
     return clientPath
 
 def currentGitBranch():
     return clientPath
 
 def currentGitBranch():
-    retcode = system(["git", "symbolic-ref", "-q", "HEAD"], ignore_error=True)
-    if retcode != 0:
-        # on a detached head
-        return None
-    else:
-        return read_pipe(["git", "name-rev", "HEAD"]).split(" ")[1].strip()
+    return read_pipe_text(["git", "symbolic-ref", "--short", "-q", "HEAD"])
 
 def isValidGitDir(path):
     return git_dir(path) != None
 
 def isValidGitDir(path):
     return git_dir(path) != None
index ae05816e092bf6774aefa8ab43182173e5932b68..3457d5db64afc09f63e8c7de4c51b932b012c7ee 100755 (executable)
@@ -139,7 +139,7 @@ test_expect_success 'submit with master branch name from argv' '
        )
 '
 
        )
 '
 
-test_expect_failure 'allow submit from branch with same revision but different name' '
+test_expect_success 'allow submit from branch with same revision but different name' '
        test_when_finished cleanup_git &&
        git p4 clone --dest="$git" //depot &&
        (
        test_when_finished cleanup_git &&
        git p4 clone --dest="$git" //depot &&
        (