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

Re* How to generate pull-request with info of signed tag

From
Junio C Hamano <gitster@pobox.com>
Date
Dec 16, 2011, 16:56 UTC
Message-ID
<7vbor8jw0h.fsf@alter.siamese.dyndns.org>
In-Reply-To
<874nx1korf.fsf@linux.vnet.ibm.com>
"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> writes:
> I am using git from master branch and wanted to try the signed pull
> request. I have pushed the signed tag to repo.or.cz, but not sure how to
> generate pull request with signed tag information?
The correct script should grok the following command line:
 $ git request-pull v1.7.7.4 git://git.kernel.org/pub/scm/git/git.git v1.7.7.5
and include
    are available in the git repository at
      git://git.kernel.org/.../git.git tag v1.7.7.5
    for you to fetch changes up to 66c1...

but we didn't loosen the code that inspects the publishing repository to allow asking for a tag that points at an older part of the history to be pulled.

Here is an update.
-- >8 --
Subject: request-pull: update the "pull" command generation logic

The old code that insisted on asking for the tip of a branch to be pulled were not updated when we started allowing for a tag to be pulled. When a tag points at an older part of the history and there is no branch that points at the tagged commit, the script failed to say which ref is to be pulled.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 git-request-pull.sh |   46 +++++++++++++++++++++++++++++++++++++---------
 1 files changed, 37 insertions(+), 9 deletions(-)
diff --git a/git-request-pull.sh b/git-request-pull.sh
index c6a5b7a..7b5c777 100755
--- a/git-request-pull.sh
+++ b/git-request-pull.sh
@@ -57,12 +57,40 @@ headrev=$(git rev-parse --verify "$head"^0) || exit
 merge_base=$(git merge-base $baserev $headrev) ||
 die "fatal: No commits in common between $base and $head"
 
-find_matching_branch="/^$headrev	"'refs\/heads\//{
-	s/^.*	refs\/heads\///
-	p
-	q
-}'
-branch=$(git ls-remote "$url" | sed -n -e "$find_matching_branch")
+# $head is the token given from the command line. If a ref with that
+# name exists at the remote and their values match, we should use it.
+# Otherwise find a ref that matches $headrev.
+find_matching_ref='
+	sub abbr {
+		my $ref = shift;
+		if ($ref =~ s|refs/heads/||) {
+			return $ref;
+		} elsif ($ref =~ s|refs/tags/||) {
+			return "tag $ref";
+		} else {
+			return $ref;
+		}
+	}
+
+	my ($exact, $found);
+	while (<STDIN>) {
+		my ($sha1, $ref, $deref) = /^(\S+)\s+(\S+?)(\^\{\})?$/;
+		next unless ($sha1 eq $ARGV[1]);
+		$found = abbr($ref);
+		if ($ref =~ m|/\Q$ARGV[0]\E$|) {
+			$exact = $found;
+			last;
+		}
+	}
+	if ($exact) {
+		print "$exact\n";
+	} elsif ($found) {
+		print "$found\n";
+	}
+'
+
+ref=$(git ls-remote "$url" | perl -e "$find_matching_ref" "$head" "$headrev")
+
 url=$(git ls-remote --get-url "$url")
 
 git show -s --format='The following changes since commit %H:
@@ -71,7 +99,7 @@ git show -s --format='The following changes since commit %H:
 
 are available in the git repository at:
 ' $baserev &&
-echo "  $url${branch+ $branch}" &&
+echo "  $url${ref+ $ref}" &&
 git show -s --format='
 for you to fetch changes up to %H:
 
@@ -81,7 +109,7 @@ for you to fetch changes up to %H:
 
 if test -n "$branch_name"
 then
-	echo "(from the branch description for $branch local branch)"
+	echo "(from the branch description for $branch_name local branch)"
 	echo
 	git config "branch.$branch_name.description"
 fi &&
@@ -101,7 +129,7 @@ fi &&
 git shortlog ^$baserev $headrev &&
 git diff -M --stat --summary $patch $merge_base..$headrev || status=1
 
-if test -z "$branch"
+if test -z "$ref"
 then
 	echo "warn: No branch of $url is at:" >&2
 	git show -s --format='warn:   %h: %s' $headrev >&2
Previous: Junio C HamanoNext: Aneesh Kumar K.V
Message 3 of 12 in “How to generate pull-request with info of signed tag”
  1. Aneesh Kumar K.VDec 16, 2011
  2. Junio C HamanoDec 16, 2011
  3. Re* How to generate pull-request with info of signed tagJunio C Hamano, Dec 16, 2011
  4. Aneesh Kumar K.VDec 17, 2011
  5. Junio C HamanoDec 17, 2011
  6. Aneesh Kumar K.VDec 19, 2011
  7. Junio C HamanoDec 19, 2011
  8. Junio C HamanoDec 19, 2011
  9. Aneesh Kumar K.VDec 21, 2011
  10. Junio C HamanoDec 21, 2011
  11. Aneesh Kumar K.VDec 21, 2011
  12. Junio C HamanoDec 21, 2011

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.