mirror of
https://git.proxmox.com/git/libgit2
synced 2025-09-17 05:56:34 +00:00
Merge pull request #3209 from libgit2/cmn/double-author
commit: ignore multiple author fields
This commit is contained in:
commit
5f83758fa3
10
src/commit.c
10
src/commit.c
@ -309,6 +309,7 @@ int git_commit__parse(void *_commit, git_odb_object *odb_obj)
|
|||||||
const char *buffer_end = buffer_start + git_odb_object_size(odb_obj);
|
const char *buffer_end = buffer_start + git_odb_object_size(odb_obj);
|
||||||
git_oid parent_id;
|
git_oid parent_id;
|
||||||
size_t header_len;
|
size_t header_len;
|
||||||
|
git_signature dummy_sig;
|
||||||
|
|
||||||
buffer = buffer_start;
|
buffer = buffer_start;
|
||||||
|
|
||||||
@ -337,6 +338,15 @@ int git_commit__parse(void *_commit, git_odb_object *odb_obj)
|
|||||||
if (git_signature__parse(commit->author, &buffer, buffer_end, "author ", '\n') < 0)
|
if (git_signature__parse(commit->author, &buffer, buffer_end, "author ", '\n') < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
/* Some tools create multiple author fields, ignore the extra ones */
|
||||||
|
while ((size_t)(buffer_end - buffer) >= strlen("author ") && !git__prefixcmp(buffer, "author ")) {
|
||||||
|
if (git_signature__parse(&dummy_sig, &buffer, buffer_end, "author ", '\n') < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
git__free(dummy_sig.name);
|
||||||
|
git__free(dummy_sig.email);
|
||||||
|
}
|
||||||
|
|
||||||
/* Always parse the committer; we need the commit time */
|
/* Always parse the committer; we need the commit time */
|
||||||
commit->committer = git__malloc(sizeof(git_signature));
|
commit->committer = git__malloc(sizeof(git_signature));
|
||||||
GITERR_CHECK_ALLOC(commit->committer);
|
GITERR_CHECK_ALLOC(commit->committer);
|
||||||
|
@ -262,6 +262,13 @@ gpgsig -----BEGIN PGP SIGNATURE-----\n\
|
|||||||
-----END PGP SIGNATURE-----\n\
|
-----END PGP SIGNATURE-----\n\
|
||||||
\n\
|
\n\
|
||||||
a simple commit which works\n",
|
a simple commit which works\n",
|
||||||
|
/* some tools create two author entries */
|
||||||
|
"tree 1810dff58d8a660512d4832e740f692884338ccd\n\
|
||||||
|
author Vicent Marti <tanoku@gmail.com> 1273848544 +0200\n\
|
||||||
|
author Helpful Coworker <helpful@coworker> 1273848544 +0200\n\
|
||||||
|
committer Vicent Marti <tanoku@gmail.com> 1273848544 +0200\n\
|
||||||
|
\n\
|
||||||
|
a simple commit which works",
|
||||||
};
|
};
|
||||||
|
|
||||||
static int parse_commit(git_commit **out, const char *buffer)
|
static int parse_commit(git_commit **out, const char *buffer)
|
||||||
|
Loading…
Reference in New Issue
Block a user