It obviously never worked, refs don't start with '/'.

Signed-off-by: Felipe Contreras <felipe.contre...@gmail.com>
---
 git-request-pull.sh     | 10 ++++++++--
 t/t5150-request-pull.sh | 21 +++++++++++++++++++++
 2 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/git-request-pull.sh b/git-request-pull.sh
index 3e510ca..c970244 100755
--- a/git-request-pull.sh
+++ b/git-request-pull.sh
@@ -38,6 +38,11 @@ done
 base=$1 url=$2 head=${3-HEAD} status=0 branch_name=
 
 headref=$(git rev-parse -q --verify --symbolic-full-name "$head")
+if test "$headref" = "HEAD"
+then
+       headref=
+fi
+
 branch_name=${headref#refs/heads/}
 if test "z$branch_name" = "z$headref" ||
        ! git config "branch.$branch_name.description" >/dev/null
@@ -90,8 +95,9 @@ find_matching_ref='
                        $tagged = $found;
                        last;
                }
-               if ($ref =~ m|/\Q$ARGV[0]\E$|) {
+               if ($ref eq $ARGV[0]) {
                        $exact = $found;
+                       last;
                }
        }
        if ($tagged) {
@@ -103,7 +109,7 @@ find_matching_ref='
        }
 '
 
-ref=$(git ls-remote "$url" | perl -e "$find_matching_ref" "$head" "$headrev" 
"$tag_name")
+ref=$(git ls-remote "$url" | perl -e "$find_matching_ref" "$headref" 
"$headrev" "$tag_name")
 
 url=$(git ls-remote --get-url "$url")
 
diff --git a/t/t5150-request-pull.sh b/t/t5150-request-pull.sh
index a9ee96a..73f0369 100755
--- a/t/t5150-request-pull.sh
+++ b/t/t5150-request-pull.sh
@@ -281,4 +281,25 @@ test_expect_success 'pull request with branch description 
from rev' '
        grep "Branch for upstream" request
 '
 
+test_expect_success 'pull request with exact match' '
+       test_when_finished "(cd local && git checkout - && git branch -D 
for-upstream)" &&
+       rm -fr downstream.git &&
+       git init --bare downstream.git &&
+       (
+               cd local &&
+               git checkout -b for-upstream master &&
+               git push origin master:for-upstream master:zeebra &&
+               git request-pull initial origin for-upstream >../request
+       ) &&
+       cat request &&
+       sed -nf read-request.sed <request >digest &&
+       cat digest &&
+       {
+               read task &&
+               read repository &&
+               read branch
+       } <digest &&
+       test "$branch" = for-upstream
+'
+
 test_done
-- 
1.8.4-fc

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to