git-fetch's auto-following of tags fetches all tags for which it finds objects in the local repository. I feel it were better if not object existence, but connectivity to the existing refs was checked, like this: diff --git a/git-fetch.sh b/git-fetch.sh index fd70696..1b3c459 100755 --- a/git-fetch.sh +++ b/git-fetch.sh @@ -314,11 +314,12 @@ case "$no_tags$tags" in taglist=$(IFS=' ' && echo "$ls_remote_result" | git-show-ref --exclude-existing=refs/tags/ | while read sha1 name do - git-cat-file -t "$sha1" >/dev/null 2>&1 || continue + t=$(git-rev-list --max-count=1 "$sha1" --not --all 2> /dev/null) && + test -z "$t" || continue echo >&2 "Auto-following $name" echo ".${name}:${name}" done) esac case "$taglist" in Is this considered in the shell-to-C rewrite that's currently going on? The background is that I sometimes fetch a branch with tags, but then decide to remove it (and the tags as well). git-gc and git-prune do not guarantee that the objects go away because they could be reachable from reflogs. Now the next git-fetch will fetch the tags again even though I do not have any refs from which they would be reachable. -- Hannes - 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