filter-branch: use hash-object instead of mktag
authorIan Campbell <ijc@hellion.org.uk>
Thu, 21 Sep 2017 07:49:32 +0000 (08:49 +0100)
committerJunio C Hamano <gitster@pobox.com>
Fri, 22 Sep 2017 03:57:45 +0000 (12:57 +0900)
This allows us to recreate even historical tags which would now be consider
invalid, such as v2.6.12-rc2..v2.6.13-rc3 in the Linux kernel source tree which
lack the `tagger` header.

$ git rev-parse v2.6.12-rc2
9e734775f7c22d2f89943ad6c745571f1930105f
$ git cat-file tag v2.6.12-rc2 | git mktag
error: char76: could not find "tagger "
fatal: invalid tag signature file
$ git cat-file tag v2.6.12-rc2 | git hash-object -t tag -w --stdin
9e734775f7c22d2f89943ad6c745571f1930105f

Signed-off-by: Ian Campbell <ijc@hellion.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-filter-branch.sh
index 956869b8e397affd189d99ad7bf0c2debea79f10..3365a3b866b510db5bf9ca20a0341c34c21b7a69 100755 (executable)
@@ -561,7 +561,7 @@ if [ "$filter_tag_name" ]; then
                                        }' \
                                    -e '/^-----BEGIN PGP SIGNATURE-----/q' \
                                    -e 'p' ) |
-                               git mktag) ||
+                               git hash-object -t tag -w --stdin) ||
                                die "Could not create new tag object for $ref"
                        if git cat-file tag "$ref" | \
                           sane_grep '^-----BEGIN PGP SIGNATURE-----' >/dev/null 2>&1