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=<20060427105251.AA4B2353DAC@xxxxxxxxxxxxx> 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." -- Kurt Vonnegut, Sirens from Titan - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html