summaryrefslogtreecommitdiff
path: root/git-filter-branch.sh
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-05-06 02:16:20 (GMT)
committerJunio C Hamano <gitster@pobox.com>2008-05-06 02:16:20 (GMT)
commite9dd7518666ae8bfb3d7ddbca1a00c018d2e79e8 (patch)
tree0c5f257be4726f4760bd4d63dfb3585ea667c090 /git-filter-branch.sh
parente2e2defc14a79ea5b4aaae23e33072f29c5965eb (diff)
parent1bf6551e42c79a594689a356a9b14759d55f3cf5 (diff)
downloadgit-e9dd7518666ae8bfb3d7ddbca1a00c018d2e79e8.zip
git-e9dd7518666ae8bfb3d7ddbca1a00c018d2e79e8.tar.gz
git-e9dd7518666ae8bfb3d7ddbca1a00c018d2e79e8.tar.bz2
Merge branch 'bc/filter-branch'
* bc/filter-branch: filter-branch.sh: support nearly proper tag name filtering
Diffstat (limited to 'git-filter-branch.sh')
-rwxr-xr-xgit-filter-branch.sh18
1 files changed, 16 insertions, 2 deletions
diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index ea59015..333f6a8 100755
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
@@ -406,8 +406,22 @@ if [ "$filter_tag_name" ]; then
echo "$ref -> $new_ref ($sha1 -> $new_sha1)"
if [ "$type" = "tag" ]; then
- # Warn that we are not rewriting the tag object itself.
- warn "unreferencing tag object $sha1t"
+ new_sha1=$(git cat-file tag "$ref" |
+ sed -n \
+ -e "1,/^$/{
+ s/^object .*/object $new_sha1/
+ s/^type .*/type commit/
+ s/^tag .*/tag $new_ref/
+ }" \
+ -e '/^-----BEGIN PGP SIGNATURE-----/q' \
+ -e 'p' |
+ git mktag) ||
+ die "Could not create new tag object for $ref"
+ if git cat-file tag "$ref" | \
+ grep '^-----BEGIN PGP SIGNATURE-----' >/dev/null 2>&1
+ then
+ warn "gpg signature stripped from tag object $sha1t"
+ fi
fi
git update-ref "refs/tags/$new_ref" "$new_sha1" ||