diff options
| author | Junio C Hamano <gitster@pobox.com> | 2019-09-09 12:26:39 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2019-09-09 12:26:39 -0700 |
| commit | a477abe9e4bdf1dd3627c20b69ed8b51f27c2f81 (patch) | |
| tree | ab97583bf79c58e4b24c4b3f9b44c864218b62d1 | |
| parent | Merge branch 'sb/userdiff-dts' (diff) | |
| parent | ref-filter: initialize empty name or email fields (diff) | |
| download | git-a477abe9e4bdf1dd3627c20b69ed8b51f27c2f81.tar.gz git-a477abe9e4bdf1dd3627c20b69ed8b51f27c2f81.zip | |
Merge branch 'mp/for-each-ref-missing-name-or-email'
"for-each-ref" and friends that shows refs did not protect themselves
against ancient tags that did not record tagger names when asked to
show "%(taggername)", which have been corrected.
* mp/for-each-ref-missing-name-or-email:
ref-filter: initialize empty name or email fields
| -rw-r--r-- | ref-filter.c | 6 | ||||
| -rwxr-xr-x | t/t6300-for-each-ref.sh | 19 |
2 files changed, 22 insertions, 3 deletions
diff --git a/ref-filter.c b/ref-filter.c index f27cfc8c3e..7338cfc671 100644 --- a/ref-filter.c +++ b/ref-filter.c @@ -1028,7 +1028,7 @@ static const char *copy_name(const char *buf) if (!strncmp(cp, " <", 2)) return xmemdupz(buf, cp - buf); } - return ""; + return xstrdup(""); } static const char *copy_email(const char *buf) @@ -1036,10 +1036,10 @@ static const char *copy_email(const char *buf) const char *email = strchr(buf, '<'); const char *eoemail; if (!email) - return ""; + return xstrdup(""); eoemail = strchr(email, '>'); if (!eoemail) - return ""; + return xstrdup(""); return xmemdupz(email, eoemail + 1 - email); } diff --git a/t/t6300-for-each-ref.sh b/t/t6300-for-each-ref.sh index ab69aa176d..9c910ce746 100755 --- a/t/t6300-for-each-ref.sh +++ b/t/t6300-for-each-ref.sh @@ -526,6 +526,25 @@ test_expect_success 'Check ambiguous head and tag refs II (loose)' ' test_cmp expected actual ' +test_expect_success 'create tag without tagger' ' + git tag -a -m "Broken tag" taggerless && + git tag -f taggerless $(git cat-file tag taggerless | + sed -e "/^tagger /d" | + git hash-object --stdin -w -t tag) +' + +test_atom refs/tags/taggerless type 'commit' +test_atom refs/tags/taggerless tag 'taggerless' +test_atom refs/tags/taggerless tagger '' +test_atom refs/tags/taggerless taggername '' +test_atom refs/tags/taggerless taggeremail '' +test_atom refs/tags/taggerless taggerdate '' +test_atom refs/tags/taggerless committer '' +test_atom refs/tags/taggerless committername '' +test_atom refs/tags/taggerless committeremail '' +test_atom refs/tags/taggerless committerdate '' +test_atom refs/tags/taggerless subject 'Broken tag' + test_expect_success 'an unusual tag with an incomplete line' ' git tag -m "bogo" bogo && |
