From: Ian Campbell Date: Wed, 09 Aug 2017 07:43:18 GMT Subject: Re: [PATCH 2/2] filter-branch: Handle rewritting (very) old style tags which lack tagger Message-ID: <1502264598.2735.30.camel@hellion.org.uk> In-Reply-To: On Tue, 2017-08-08 at 14:00 -0700, Junio C Hamano wrote: > > @@ -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 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? I'm far from an awk guru but I think (unit tested in isolation only) that such script would look something like (I also inverted/renamed done into header since it seemed clearer): BEGIN { header=1 } /^tagger / { tagged=1 } /^$/ { if (!tagged && header) { print "tagger Unknown < unknown@example.com > 0 +0000" } ; header=0 } /^-----BEGIN PGP SIGNATURE-----/ { exit(0) } // { if (!header || $0 !~ /^(object|type|tag )/) { print } } Ian.