Such as v2.6.12-rc2..v2.6.13-rc3 in the Linux kernel source tree. Insert a fake tag header, since newer `git mktag` wont accept the input otherwise: $ git cat-file tag v2.6.12-rc2 object 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 type commit tag v2.6.12-rc2 Linux v2.6.12-rc2 release -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQBCbW8ZF3YsRnbiHLsRAgFRAKCq/TkuDaEombFABkPqYgGCgWN2lQCcC0qc wznDbFU45A54dZC8RZ5JxyE= =ESRP -----END PGP SIGNATURE----- $ 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.13-rc4 | git mktag 7eab951de91d95875ba34ec4c599f37e1208db93 Signed-off-by: Ian Campbell <ijc@xxxxxxxxxxxxxx> --- git-filter-branch.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/git-filter-branch.sh b/git-filter-branch.sh index d07db3fee..6927aa2da 100755 --- a/git-filter-branch.sh +++ b/git-filter-branch.sh @@ -540,6 +540,9 @@ if [ "$filter_tag_name" ]; then new_sha1=$( ( printf 'object %s\ntype commit\ntag %s\n' \ "$new_sha1" "$new_ref" git cat-file tag "$ref" | + awk '/^tagger/ { tagged=1 } + /^$/ { if (!tagged && !done) { print "tagger Unknown <unknown@xxxxxxxxxxx> 0 +0000" } ; done=1 } + // { print }' | sed -n \ -e '1,/^$/{ /^object /d -- 2.11.0