git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 3/3] request-pull: find matching tag or branch name on remote side

From
Paolo Bonzini <bonzini@gnu.org>
Date
Feb 16, 2015, 18:16 UTC
Message-ID
<1424110568-29479-4-git-send-email-bonzini@gnu.org>
In-Reply-To
<1424110568-29479-1-git-send-email-bonzini@gnu.org>
From: Paolo Bonzini <pbonzini@redhat.com>

If the third argument is not passed to "git request-pull", the find_matching_ref script will look for HEAD in the remote side which does not work. Instead, default to the ref names found via "git show-ref" or "git tag".

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 git-request-pull.sh     | 14 ++++++++++----
 t/t5150-request-pull.sh |  2 +-
 2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/git-request-pull.sh b/git-request-pull.sh
index a507006..fcbe383 100755
--- a/git-request-pull.sh
+++ b/git-request-pull.sh
@@ -54,8 +54,6 @@ fi
 local=${3%:*}
 local=${local:-HEAD}
 remote=${3#*:}
-pretty_remote=${remote#refs/}
-pretty_remote=${pretty_remote#heads/}
 head=$(git symbolic-ref -q "$local")
 head=${head:-$(git show-ref --heads --tags "$local" | cut -d' ' -f2)}
 head=${head:-$(git tag --points-at "$local" | sed 's,^,refs/tags/,')}
@@ -64,6 +62,14 @@ head=${head:-$(git rev-parse --quiet --verify "$local")}
 # None of the above? Bad.
 test -z "$head" && die "fatal: Not a valid revision: $local"
 
+#
+# If $3 was not there, the remote name should be the same
+# as the locally detected name
+#
+remote=${remote:-$head}
+pretty_remote=${remote#refs/}
+pretty_remote=${pretty_remote#heads/}
+
 # This also verifies that the resulting head is unique:
 # "git show-ref" could have shown multiple matching refs..
 headrev=$(git rev-parse --verify --quiet "$head"^0)
@@ -111,12 +117,12 @@ find_matching_ref='
 	}
 '
 
-ref=$(git ls-remote "$url" | @@PERL@@ -e "$find_matching_ref" "${remote:-HEAD}" "$headrev")
+ref=$(git ls-remote "$url" | @@PERL@@ -e "$find_matching_ref" "$remote" "$headrev")
 
 if test -z "$ref"
 then
 	echo "warn: No match for commit $headrev found at $url" >&2
-	echo "warn: Are you sure you pushed '${remote:-HEAD}' there?" >&2
+	echo "warn: Are you sure you pushed '$remote' there?" >&2
 	status=1
 fi
 
diff --git a/t/t5150-request-pull.sh b/t/t5150-request-pull.sh
index 8b19279..11ba8ff 100755
--- a/t/t5150-request-pull.sh
+++ b/t/t5150-request-pull.sh
@@ -178,7 +178,7 @@ test_expect_success 'request asks HEAD to be pulled' '
 		read repository &&
 		read branch
 	} <digest &&
-	test -z "$branch"
+	test "$branch" = "tags/full"
 
 '
 
-- 
2.3.0
Previous: Paolo BonziniNext: Junio C Hamano
Message 4 of 16 in “request-pull: do something if $3 is passed”
  1. 0/3 request-pull: do something if $3 is passedPaolo Bonzini, Feb 16, 2015
  2. 1/3 request-pull: fix expected format in testsPaolo Bonzini, Feb 16, 2015
  3. 2/3 request-pull: use "git tag --points-at" to detect local tagsPaolo Bonzini, Feb 16, 2015
  4. 3/3 request-pull: find matching tag or branch name on remote sidePaolo Bonzini, Feb 16, 2015
  5. Junio C HamanoFeb 16, 2015
  6. Paolo BonziniFeb 17, 2015
  7. Junio C HamanoFeb 17, 2015
  8. Paolo BonziniFeb 17, 2015
  9. Linus TorvaldsFeb 17, 2015
  10. Paolo BonziniFeb 17, 2015
  11. Linus TorvaldsFeb 17, 2015
  12. Paolo BonziniFeb 17, 2015
  13. Linus TorvaldsFeb 17, 2015
  14. Junio C HamanoFeb 18, 2015
  15. Junio C HamanoFeb 17, 2015
  16. Linus TorvaldsFeb 17, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.