Re: [PATCH 2/2] filter-branch: Handle rewritting (very) old style tags which lack tagger
From: Junio C Hamano <hidden>
Date: 2017-08-08 21:01:06
Ian Campbell [off-list ref] writes:
quoted hunk
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 <redacted> --- 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@example.com> 0 +0000" } ; done=1 } + // { print }' | sed -n \ -e '1,/^$/{ /^object /d
What the change wants to do makes perfect sense, but piping output from awk into sed looks somewhat gross. Perhaps we'd want to roll what the existing sed script is trying to do into this new awk script?