{"thread":{"id":"51660","subject":"[PATCH] ref-filter: initialize empty name or email fields","startedAt":"2019-08-17T21:51:12Z","lastAt":"2019-08-22T18:05:43Z","messageCount":9,"participants":["Mischa POSLAWSKY","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"380614","messageId":"20190817215107.13733-1-git@shiar.nl","threadId":"51660","inReplyTo":null,"subject":"[PATCH] ref-filter: initialize empty name or email fields","fromName":"Mischa POSLAWSKY","fromEmail":"git@shiar.nl","sentAt":"2019-08-17T21:51:07Z","receivedAt":"2019-08-17T21:51:12Z","isPatch":true,"sender":{"key":"git@shiar.nl","avatar":null},"body":"Formatting $(taggername) on headerless tags such as v0.99 in Git\ncauses a SIGABRT with error \"munmap_chunk(): invalid pointer\",\nbecause of an oversight in commit f0062d3b74 (ref-filter: free\nitem->value and item->value->s, 2018-10-19).\n\nSigned-off-by: Mischa POSLAWSKY <git@shiar.nl>\n---\nIf I understand correctly, such tags cannot be produced normally anymore.\nTherefore I'm unsure how to make tests, and if that is even warranted.\n\n ref-filter.c | 6 +++---\n 1 file changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/ref-filter.c b/ref-filter.c\nindex f27cfc8c3e..7338cfc671 100644\n--- a/ref-filter.c\n+++ b/ref-filter.c\n@@ -1028,7 +1028,7 @@ static const char *copy_name(const char *buf)\n \t\tif (!strncmp(cp, \" <\", 2))\n \t\t\treturn xmemdupz(buf, cp - buf);\n \t}\n-\treturn \"\";\n+\treturn xstrdup(\"\");\n }\n \n static const char *copy_email(const char *buf)\n@@ -1036,10 +1036,10 @@ static const char *copy_email(const char *buf)\n \tconst char *email = strchr(buf, '<');\n \tconst char *eoemail;\n \tif (!email)\n-\t\treturn \"\";\n+\t\treturn xstrdup(\"\");\n \teoemail = strchr(email, '>');\n \tif (!eoemail)\n-\t\treturn \"\";\n+\t\treturn xstrdup(\"\");\n \treturn xmemdupz(email, eoemail + 1 - email);\n }\n \n-- \n2.23.0\n\n"},{"id":"380721","messageId":"xmqqimqtxcou.fsf@gitster-ct.c.googlers.com","threadId":"51660","inReplyTo":"20190817215107.13733-1-git@shiar.nl","subject":"Re: [PATCH] ref-filter: initialize empty name or email fields","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2019-08-19T17:55:13Z","receivedAt":"2019-08-19T17:55:18Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Mischa POSLAWSKY <git@shiar.nl> writes:\n\n> Formatting $(taggername) on headerless tags such as v0.99 in Git\n> causes a SIGABRT with error \"munmap_chunk(): invalid pointer\",\n> because of an oversight in commit f0062d3b74 (ref-filter: free\n> item->value and item->value->s, 2018-10-19).\n>\n> Signed-off-by: Mischa POSLAWSKY <git@shiar.nl>\n> ---\n> If I understand correctly, such tags cannot be produced normally anymore.\n> Therefore I'm unsure how to make tests, and if that is even warranted.\n\nThanks for spotting.\n\nI am not sure if the approach taken by this patch is the right one,\nthough.  I didn't follow the call/dataflow thoroughly, but if we\nreplace unfree-able \"\" with NULL in these places, wouldn't\nfill_missing_values() take care of them?\n\n>  ref-filter.c | 6 +++---\n>  1 file changed, 3 insertions(+), 3 deletions(-)\n>\n> diff --git a/ref-filter.c b/ref-filter.c\n> index f27cfc8c3e..7338cfc671 100644\n> --- a/ref-filter.c\n> +++ b/ref-filter.c\n> @@ -1028,7 +1028,7 @@ static const char *copy_name(const char *buf)\n>  \t\tif (!strncmp(cp, \" <\", 2))\n>  \t\t\treturn xmemdupz(buf, cp - buf);\n>  \t}\n> -\treturn \"\";\n> +\treturn xstrdup(\"\");\n>  }\n>  \n>  static const char *copy_email(const char *buf)\n> @@ -1036,10 +1036,10 @@ static const char *copy_email(const char *buf)\n>  \tconst char *email = strchr(buf, '<');\n>  \tconst char *eoemail;\n>  \tif (!email)\n> -\t\treturn \"\";\n> +\t\treturn xstrdup(\"\");\n>  \teoemail = strchr(email, '>');\n>  \tif (!eoemail)\n> -\t\treturn \"\";\n> +\t\treturn xstrdup(\"\");\n>  \treturn xmemdupz(email, eoemail + 1 - email);\n>  }\n"},{"id":"380815","messageId":"xmqq4l2bx06p.fsf@gitster-ct.c.googlers.com","threadId":"51660","inReplyTo":"xmqqimqtxcou.fsf@gitster-ct.c.googlers.com","subject":"Re: [PATCH] ref-filter: initialize empty name or email fields","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2019-08-20T16:37:34Z","receivedAt":"2019-08-20T16:37:40Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> Mischa POSLAWSKY <git@shiar.nl> writes:\n>\n>> Formatting $(taggername) on headerless tags such as v0.99 in Git\n>> causes a SIGABRT with error \"munmap_chunk(): invalid pointer\",\n>> because of an oversight in commit f0062d3b74 (ref-filter: free\n>> item->value and item->value->s, 2018-10-19).\n>>\n>> Signed-off-by: Mischa POSLAWSKY <git@shiar.nl>\n>> ---\n>> If I understand correctly, such tags cannot be produced normally anymore.\n>> Therefore I'm unsure how to make tests, and if that is even warranted.\n>\n> Thanks for spotting.\n>\n> I am not sure if the approach taken by this patch is the right one,\n> though.  I didn't follow the call/dataflow thoroughly, but if we\n> replace unfree-able \"\" with NULL in these places, wouldn't\n> fill_missing_values() take care of them?\n\nI think replacing these \"\" with NULL would be safe, but there are\nmany places that return xstrdup(\"\") from inside the callees of\npopulate_value(), so the patch presented here would be more\nconsistent with the current practice, I think.\n\nSo let's take the patch as is, at least for now.  Thanks.\n\n>>  ref-filter.c | 6 +++---\n>>  1 file changed, 3 insertions(+), 3 deletions(-)\n>>\n>> diff --git a/ref-filter.c b/ref-filter.c\n>> index f27cfc8c3e..7338cfc671 100644\n>> --- a/ref-filter.c\n>> +++ b/ref-filter.c\n>> @@ -1028,7 +1028,7 @@ static const char *copy_name(const char *buf)\n>>  \t\tif (!strncmp(cp, \" <\", 2))\n>>  \t\t\treturn xmemdupz(buf, cp - buf);\n>>  \t}\n>> -\treturn \"\";\n>> +\treturn xstrdup(\"\");\n>>  }\n>>  \n>>  static const char *copy_email(const char *buf)\n>> @@ -1036,10 +1036,10 @@ static const char *copy_email(const char *buf)\n>>  \tconst char *email = strchr(buf, '<');\n>>  \tconst char *eoemail;\n>>  \tif (!email)\n>> -\t\treturn \"\";\n>> +\t\treturn xstrdup(\"\");\n>>  \teoemail = strchr(email, '>');\n>>  \tif (!eoemail)\n>> -\t\treturn \"\";\n>> +\t\treturn xstrdup(\"\");\n>>  \treturn xmemdupz(email, eoemail + 1 - email);\n>>  }\n"},{"id":"380909","messageId":"xmqq1rxerxkk.fsf@gitster-ct.c.googlers.com","threadId":"51660","inReplyTo":"xmqqimqtxcou.fsf@gitster-ct.c.googlers.com","subject":"Re: [PATCH] ref-filter: initialize empty name or email fields","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2019-08-21T21:57:31Z","receivedAt":"2019-08-21T21:57:39Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> Mischa POSLAWSKY <git@shiar.nl> writes:\n>\n>> If I understand correctly, such tags cannot be produced normally anymore.\n>> Therefore I'm unsure how to make tests, and if that is even warranted.\n>\n> Thanks for spotting.\n\nA quick trial to recreate a tag object seems to succeed:\n\n    $ git cat-file tag v0.99 |\n    > sed -e '/-----BEGIN/,$d' |\n    > git hash-object --stdin -w -t tag\n    667d141b478eee5e53d2ee05acd61bb1f640249a\n    $ git cat-file tag 667d141b47\n    object a3eb250f996bf5e12376ec88622c4ccaabf20ea8\n    type commit\n    tag v0.99\n\n    Test-release for wider distribution.\n\n    I'll make the first public RPM's etc, thus the tag.\n\nSo we should be able to do something along the above line.  Here is\nmy quick-n-dirty one.\n\n t/t6300-for-each-ref.sh | 12 ++++++++++++\n 1 file changed, 12 insertions(+)\n\ndiff --git a/t/t6300-for-each-ref.sh b/t/t6300-for-each-ref.sh\nindex ab69aa176d..b3a6b336fa 100755\n--- a/t/t6300-for-each-ref.sh\n+++ b/t/t6300-for-each-ref.sh\n@@ -869,4 +869,16 @@ test_expect_success 'for-each-ref --ignore-case ignores case' '\n \ttest_cmp expect actual\n '\n \n+test_expect_success 'show a taggerless tag' '\n+\ttest_commit tagged &&\n+\tgit tag -a -m \"a normal tag\" to-be-shown-0 HEAD &&\n+\tanother=$(git cat-file tag to-be-shown-0 |\n+\t\tsed -e \"/^tagger /d\" \\\n+\t\t    -e \"/^tag to-be-shown/s/0/1/\" \\\n+\t\t    -e \"s/a normal tag/a broken tag/\" |\n+\t\tgit hash-object --stdin -w -t tag) &&\n+\tgit tag to-be-shown-1 $another &&\n+\tgit for-each-ref --format=\"%(refname:short) %(taggername)\" refs/tags/to-be-shown\\*\n+'\n+\n test_done\n\n"},{"id":"380928","messageId":"20190822132334.GA28725@shiar.net","threadId":"51660","inReplyTo":"xmqq4l2bx06p.fsf@gitster-ct.c.googlers.com","subject":"Re: [PATCH] ref-filter: initialize empty name or email fields","fromName":"Mischa POSLAWSKY","fromEmail":"git@shiar.nl","sentAt":"2019-08-22T13:23:34Z","receivedAt":"2019-08-22T13:23:39Z","isPatch":true,"sender":{"key":"git@shiar.nl","avatar":null},"body":"Junio wrote:\n> Junio C Hamano <gitster@pobox.com> writes:\n> \n> > Mischa POSLAWSKY <git@shiar.nl> writes:\n> >\n> >> Formatting $(taggername) on headerless tags such as v0.99 in Git\n> >> causes a SIGABRT with error \"munmap_chunk(): invalid pointer\",\n> >> because of an oversight in commit f0062d3b74 (ref-filter: free\n> >> item->value and item->value->s, 2018-10-19).\n> >>\n> >> Signed-off-by: Mischa POSLAWSKY <git@shiar.nl>\n> >> ---\n> >> If I understand correctly, such tags cannot be produced normally anymore.\n> >> Therefore I'm unsure how to make tests, and if that is even warranted.\n> >\n> > Thanks for spotting.\n> >\n> > I am not sure if the approach taken by this patch is the right one,\n> > though.  I didn't follow the call/dataflow thoroughly, but if we\n> > replace unfree-able \"\" with NULL in these places, wouldn't\n> > fill_missing_values() take care of them?\n> \n> I think replacing these \"\" with NULL would be safe, but there are\n> many places that return xstrdup(\"\") from inside the callees of\n> populate_value(), so the patch presented here would be more\n> consistent with the current practice, I think.\n\nIndeed, I just copied the existing style.  Returning NULL seems to work,\nbut not something I'm confident to clean up here.\n\n> So let's take the patch as is, at least for now.  Thanks.\n\nThank you!\n\n> >>  ref-filter.c | 6 +++---\n> >>  1 file changed, 3 insertions(+), 3 deletions(-)\n> >>\n> >> diff --git a/ref-filter.c b/ref-filter.c\n> >> index f27cfc8c3e..7338cfc671 100644\n> >> --- a/ref-filter.c\n> >> +++ b/ref-filter.c\n> >> @@ -1028,7 +1028,7 @@ static const char *copy_name(const char *buf)\n> >>  \t\tif (!strncmp(cp, \" <\", 2))\n> >>  \t\t\treturn xmemdupz(buf, cp - buf);\n> >>  \t}\n> >> -\treturn \"\";\n> >> +\treturn xstrdup(\"\");\n> >>  }\n> >>  \n> >>  static const char *copy_email(const char *buf)\n> >> @@ -1036,10 +1036,10 @@ static const char *copy_email(const char *buf)\n> >>  \tconst char *email = strchr(buf, '<');\n> >>  \tconst char *eoemail;\n> >>  \tif (!email)\n> >> -\t\treturn \"\";\n> >> +\t\treturn xstrdup(\"\");\n> >>  \teoemail = strchr(email, '>');\n> >>  \tif (!eoemail)\n> >> -\t\treturn \"\";\n> >> +\t\treturn xstrdup(\"\");\n> >>  \treturn xmemdupz(email, eoemail + 1 - email);\n> >>  }\n"},{"id":"380932","messageId":"20190822135528.GB28725@shiar.net","threadId":"51660","inReplyTo":"xmqq1rxerxkk.fsf@gitster-ct.c.googlers.com","subject":"[PATCH 2/1] t6300: format missing tagger","fromName":"Mischa POSLAWSKY","fromEmail":"git@shiar.nl","sentAt":"2019-08-22T13:55:28Z","receivedAt":"2019-08-22T13:55:36Z","isPatch":true,"sender":{"key":"git@shiar.nl","avatar":null},"body":"Junio wrote:\n> Junio C Hamano <gitster@pobox.com> writes:\n> \n> > Mischa POSLAWSKY <git@shiar.nl> writes:\n> >\n> >> If I understand correctly, such tags cannot be produced normally anymore.\n> >> Therefore I'm unsure how to make tests, and if that is even warranted.\n> >\n> > Thanks for spotting.\n> \n> A quick trial to recreate a tag object seems to succeed:\n> \n>     $ git cat-file tag v0.99 |\n>     > sed -e '/-----BEGIN/,$d' |\n>     > git hash-object --stdin -w -t tag\n>     667d141b478eee5e53d2ee05acd61bb1f640249a\n>     $ git cat-file tag 667d141b47\n>     object a3eb250f996bf5e12376ec88622c4ccaabf20ea8\n>     type commit\n>     tag v0.99\n> \n>     Test-release for wider distribution.\n> \n>     I'll make the first public RPM's etc, thus the tag.\n> \n> So we should be able to do something along the above line.  Here is\n> my quick-n-dirty one.\n> \n>  t/t6300-for-each-ref.sh | 12 ++++++++++++\n>  1 file changed, 12 insertions(+)\n> \n> diff --git a/t/t6300-for-each-ref.sh b/t/t6300-for-each-ref.sh\n> index ab69aa176d..b3a6b336fa 100755\n> --- a/t/t6300-for-each-ref.sh\n> +++ b/t/t6300-for-each-ref.sh\n> @@ -869,4 +869,16 @@ test_expect_success 'for-each-ref --ignore-case ignores case' '\n>  \ttest_cmp expect actual\n>  '\n>  \n> +test_expect_success 'show a taggerless tag' '\n> +\ttest_commit tagged &&\n> +\tgit tag -a -m \"a normal tag\" to-be-shown-0 HEAD &&\n> +\tanother=$(git cat-file tag to-be-shown-0 |\n> +\t\tsed -e \"/^tagger /d\" \\\n> +\t\t    -e \"/^tag to-be-shown/s/0/1/\" \\\n> +\t\t    -e \"s/a normal tag/a broken tag/\" |\n> +\t\tgit hash-object --stdin -w -t tag) &&\n> +\tgit tag to-be-shown-1 $another &&\n> +\tgit for-each-ref --format=\"%(refname:short) %(taggername)\" refs/tags/to-be-shown\\*\n> +'\n> +\n>  test_done\n> \n\nAlright, thanks for the pointer.\nHere's a batch of tests on all pertaining atoms.\n\n-- >8 --\n\nStrip an annotated tag of its tagger header and verify it's ignored\ncorrectly in all cases, as fixed in commit e2a81276e8 (ref-filter:\ninitialize empty name or email fields, 2019-08-19).\n\nSigned-off-by: Mischa POSLAWSKY <git@shiar.nl>\n---\n t/t6300-for-each-ref.sh | 19 +++++++++++++++++++\n 1 file changed, 19 insertions(+)\n\ndiff --git a/t/t6300-for-each-ref.sh b/t/t6300-for-each-ref.sh\nindex ab69aa176d..9c910ce746 100755\n--- a/t/t6300-for-each-ref.sh\n+++ b/t/t6300-for-each-ref.sh\n@@ -526,6 +526,25 @@ test_expect_success 'Check ambiguous head and tag refs II (loose)' '\n \ttest_cmp expected actual\n '\n \n+test_expect_success 'create tag without tagger' '\n+\tgit tag -a -m \"Broken tag\" taggerless &&\n+\tgit tag -f taggerless $(git cat-file tag taggerless |\n+\t\tsed -e \"/^tagger /d\" |\n+\t\tgit hash-object --stdin -w -t tag)\n+'\n+\n+test_atom refs/tags/taggerless type 'commit'\n+test_atom refs/tags/taggerless tag 'taggerless'\n+test_atom refs/tags/taggerless tagger ''\n+test_atom refs/tags/taggerless taggername ''\n+test_atom refs/tags/taggerless taggeremail ''\n+test_atom refs/tags/taggerless taggerdate ''\n+test_atom refs/tags/taggerless committer ''\n+test_atom refs/tags/taggerless committername ''\n+test_atom refs/tags/taggerless committeremail ''\n+test_atom refs/tags/taggerless committerdate ''\n+test_atom refs/tags/taggerless subject 'Broken tag'\n+\n test_expect_success 'an unusual tag with an incomplete line' '\n \n \tgit tag -m \"bogo\" bogo &&\n-- \n2.23.0\n"},{"id":"380944","messageId":"xmqq36htqipw.fsf@gitster-ct.c.googlers.com","threadId":"51660","inReplyTo":"20190822135528.GB28725@shiar.net","subject":"Re: [PATCH 2/1] t6300: format missing tagger","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2019-08-22T16:15:55Z","receivedAt":"2019-08-22T16:16:04Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Mischa POSLAWSKY <git@shiar.nl> writes:\n\n> Alright, thanks for the pointer.\n> Here's a batch of tests on all pertaining atoms.\n\nGood to see that you made it much more thorough than my q-n-d\nillustration patch ;-)\n\n> -- >8 --\n>\n> Strip an annotated tag of its tagger header and verify it's ignored\n> correctly in all cases, as fixed in commit e2a81276e8 (ref-filter:\n> initialize empty name or email fields, 2019-08-19).\n\nI am inclined to squash this test part of the update into the said\ncommit; you'd lose one commit count, but hopefully you do not mind?\n\nMy motivation for doing so is that it would allow us to lose the \"as\nfixed in commit X\" comment in a log message, which in turn would\nmean that the code-fix patch can later be rebased safely without\nhaving to remember that this one needs to be adjusted (\"git rebase\"\ndoes not do such a rewrite for us, and I personally do not think\n\"git rebase\" should do such a rewrite silently, as I cannot quantify\nthe risk of false positives).\n\n>\n> Signed-off-by: Mischa POSLAWSKY <git@shiar.nl>\n> ---\n>  t/t6300-for-each-ref.sh | 19 +++++++++++++++++++\n>  1 file changed, 19 insertions(+)\n>\n> diff --git a/t/t6300-for-each-ref.sh b/t/t6300-for-each-ref.sh\n> index ab69aa176d..9c910ce746 100755\n> --- a/t/t6300-for-each-ref.sh\n> +++ b/t/t6300-for-each-ref.sh\n> @@ -526,6 +526,25 @@ test_expect_success 'Check ambiguous head and tag refs II (loose)' '\n>  \ttest_cmp expected actual\n>  '\n>  \n> +test_expect_success 'create tag without tagger' '\n> +\tgit tag -a -m \"Broken tag\" taggerless &&\n> +\tgit tag -f taggerless $(git cat-file tag taggerless |\n> +\t\tsed -e \"/^tagger /d\" |\n> +\t\tgit hash-object --stdin -w -t tag)\n> +'\n> +\n> +test_atom refs/tags/taggerless type 'commit'\n> +test_atom refs/tags/taggerless tag 'taggerless'\n> +test_atom refs/tags/taggerless tagger ''\n> +test_atom refs/tags/taggerless taggername ''\n> +test_atom refs/tags/taggerless taggeremail ''\n> +test_atom refs/tags/taggerless taggerdate ''\n> +test_atom refs/tags/taggerless committer ''\n> +test_atom refs/tags/taggerless committername ''\n> +test_atom refs/tags/taggerless committeremail ''\n> +test_atom refs/tags/taggerless committerdate ''\n> +test_atom refs/tags/taggerless subject 'Broken tag'\n> +\n>  test_expect_success 'an unusual tag with an incomplete line' '\n>  \n>  \tgit tag -m \"bogo\" bogo &&\n"},{"id":"380949","messageId":"20190822162731.gxubrdro4imv55qs@shiar.net","threadId":"51660","inReplyTo":"xmqq36htqipw.fsf@gitster-ct.c.googlers.com","subject":"Re: [PATCH 2/1] t6300: format missing tagger","fromName":"Mischa POSLAWSKY","fromEmail":"git@shiar.nl","sentAt":"2019-08-22T16:27:31Z","receivedAt":"2019-08-22T16:27:39Z","isPatch":true,"sender":{"key":"git@shiar.nl","avatar":null},"body":"Junio wrote:\n> \n> Mischa POSLAWSKY <git@shiar.nl> writes:\n> > Strip an annotated tag of its tagger header and verify it's ignored\n> > correctly in all cases, as fixed in commit e2a81276e8 (ref-filter:\n> > initialize empty name or email fields, 2019-08-19).\n> \n> I am inclined to squash this test part of the update into the said\n> commit; you'd lose one commit count, but hopefully you do not mind?\n> \n> My motivation for doing so is that it would allow us to lose the \"as\n> fixed in commit X\" comment in a log message, which in turn would\n> mean that the code-fix patch can later be rebased safely without\n> having to remember that this one needs to be adjusted (\"git rebase\"\n> does not do such a rewrite for us, and I personally do not think\n> \"git rebase\" should do such a rewrite silently, as I cannot quantify\n> the risk of false positives).\n\nOf course.  Might get one commit back if you pick it into maint :)\n"},{"id":"380963","messageId":"xmqqlfvloz2o.fsf@gitster-ct.c.googlers.com","threadId":"51660","inReplyTo":"20190822162731.gxubrdro4imv55qs@shiar.net","subject":"Re: [PATCH 2/1] t6300: format missing tagger","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2019-08-22T18:05:35Z","receivedAt":"2019-08-22T18:05:43Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Mischa POSLAWSKY <git@shiar.nl> writes:\n\n> Junio wrote:\n>> \n>> Mischa POSLAWSKY <git@shiar.nl> writes:\n>> > Strip an annotated tag of its tagger header and verify it's ignored\n>> > correctly in all cases, as fixed in commit e2a81276e8 (ref-filter:\n>> > initialize empty name or email fields, 2019-08-19).\n>> \n>> I am inclined to squash this test part of the update into the said\n>> commit; you'd lose one commit count, but hopefully you do not mind?\n>> \n>> My motivation for doing so is that it would allow us to lose the \"as\n>> fixed in commit X\" comment in a log message, which in turn would\n>> mean that the code-fix patch can later be rebased safely without\n>> having to remember that this one needs to be adjusted (\"git rebase\"\n>> does not do such a rewrite for us, and I personally do not think\n>> \"git rebase\" should do such a rewrite silently, as I cannot quantify\n>> the risk of false positives).\n>\n> Of course.  Might get one commit back if you pick it into maint :)\n\nActually you won't; I generally do not cherry-pick, even though I\nmerge down relevant fixes to older maintenance tracks.\n"}]}