commit: add for_each_mergetag()
In the same way as there is for_each_ref() to iterate on refs, for_each_mergetag() allows the caller to iterate on the mergetags of a given commit. Use it to rewrite show_mergetag() used in "git log". Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
6f92e5ff3c
commit
063da62b02
13
commit.c
13
commit.c
@ -1316,6 +1316,19 @@ struct commit_extra_header *read_commit_extra_headers(struct commit *commit,
|
||||
return extra;
|
||||
}
|
||||
|
||||
void for_each_mergetag(each_mergetag_fn fn, struct commit *commit, void *data)
|
||||
{
|
||||
struct commit_extra_header *extra, *to_free;
|
||||
|
||||
to_free = read_commit_extra_headers(commit, NULL);
|
||||
for (extra = to_free; extra; extra = extra->next) {
|
||||
if (strcmp(extra->key, "mergetag"))
|
||||
continue; /* not a merge tag */
|
||||
fn(commit, extra, data);
|
||||
}
|
||||
free_commit_extra_headers(to_free);
|
||||
}
|
||||
|
||||
static inline int standard_header_field(const char *field, size_t len)
|
||||
{
|
||||
return ((len == 4 && !memcmp(field, "tree ", 5)) ||
|
||||
|
Reference in New Issue
Block a user