summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2017-03-16 22:56:22 -0700
committerJunio C Hamano <gitster@pobox.com>2017-03-27 15:14:11 -0700
commit5fb561806726df0360ff1ae2d20026c538fb7c89 (patch)
treeee4eb90cb2d4e7c4950944cf0056a17090b75968
parent01e054f5f82fc2ab03eaa016286668090e97be1c (diff)
downloadgit-jc/p4-current-branch-fix.tar.gz
DONTMERGE git-p4: "name-rev HEAD" is not a way to find the current branchjc/p4-current-branch-fix
This function seems to want to learn which branch we are on, and running "name-rev HEAD" is *NEVER* the right way to do so. If you are on branch B which happens to point at the same commit as branch A, "name-rev HEAD" can say either A or B (and it is likely it would say A simply because it sorts earlier, and the logic seems to favor the one that was discovered earlier when all else being equal). If you are on branch B which happens to be pointed by an annotated tag T, "name-rev HEAD" will say T, not B. Use "symbolic-ref HEAD" instead. Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xgit-p4.py2
-rwxr-xr-xt/t9807-git-p4-submit.sh2
2 files changed, 2 insertions, 2 deletions
diff --git a/git-p4.py b/git-p4.py
index 0cfc8668d6..6a448a573b 100755
--- a/git-p4.py
+++ b/git-p4.py
@@ -549,7 +549,7 @@ def currentGitBranch():
# on a detached head
return None
else:
- return read_pipe(["git", "name-rev", "HEAD"]).split(" ")[1].strip()
+ return read_pipe(["git", "symbolic-ref", "HEAD"]).strip()[11:]
def isValidGitDir(path):
if (os.path.exists(path + "/HEAD")
diff --git a/t/t9807-git-p4-submit.sh b/t/t9807-git-p4-submit.sh
index 4e625fad07..643258500b 100755
--- a/t/t9807-git-p4-submit.sh
+++ b/t/t9807-git-p4-submit.sh
@@ -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 &&
(