[PATCH] git-fetch.sh: fix fetching of tags that point directly to commits
From: Petr 'Patch Proxy' Baudis <hidden>
Date: 2016-08-11 20:25:04
Subsystem:
the rest · Maintainer:
Linus Torvalds
git-fetch used to fetch only tags that pointed to tag objects,
because it required a ^{} suffix from git-ls-remote's output.
Not signed off.
---
For similar issue in Cogito, please see
http://news.gmane.org/find-root.php?message_id=[ref]
Curiously enough, Junio himself posted a patch. Perhaps given his state
as of then he forgot to fix Git as well. ;-)
I did not write this patch. One fellow IRCer did, but for personal
reasons he does not wish to disclose his realname. I think the patch is
trivial enough that copyright problems should not be a issue.
git-fetch.sh | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/git-fetch.sh b/git-fetch.sh
index 7442dd2..9074b3f 100755
--- a/git-fetch.sh
+++ b/git-fetch.sh@@ -430,9 +430,13 @@ case "$no_tags$tags" in *:refs/*) # effective only when we are following remote branch # using local tracking branch. - taglist=$(IFS=" " && + # If we get both refs/tags/foo and refs/tags/foo^{}, + # use only the latter and strip the ^{} suffix. + taglist=$( + IFS=" "; export LC_COLLATE=C git-ls-remote $upload_pack --tags "$remote" | - sed -ne 's|^\([0-9a-f]*\)[ ]\(refs/tags/.*\)^{}$|\1 \2|p' | + sed -ne 's|^\([0-9a-f]*\)[ \t]\(refs/tags/.*\)$|\1 \2|p' | + sort -k2 -r | sed -e 's/\^{}$//' | uniq -f1 | while read sha1 name do git-show-ref --verify --quiet -- $name && continue
--
Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
The meaning of Stonehenge in Traflamadorian, when viewed from above, is:
"Replacement part being rushed with all possible speed."