diff options
author | Christian Couder <chriscool@tuxfamily.org> | 2014-07-07 08:35:37 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-07-07 15:32:21 -0700 |
commit | 063da62b02aeafe58fdacce0ea48c0761b06df60 (patch) | |
tree | 56b0db184d387b64fb3e12cdf5cd7d857216f655 /log-tree.c | |
parent | 6f92e5ff3cdc813de8ef5327fd4bad492fb7d6c9 (diff) | |
download | git-063da62b02aeafe58fdacce0ea48c0761b06df60.tar.gz |
commit: add for_each_mergetag()cc/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>
Diffstat (limited to 'log-tree.c')
-rw-r--r-- | log-tree.c | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/log-tree.c b/log-tree.c index 10e68442b3..706ed4c250 100644 --- a/log-tree.c +++ b/log-tree.c @@ -413,10 +413,11 @@ static int is_common_merge(const struct commit *commit) && !commit->parents->next->next); } -static void show_one_mergetag(struct rev_info *opt, +static void show_one_mergetag(struct commit *commit, struct commit_extra_header *extra, - struct commit *commit) + void *data) { + struct rev_info *opt = (struct rev_info *)data; unsigned char sha1[20]; struct tag *tag; struct strbuf verify_message; @@ -463,15 +464,7 @@ static void show_one_mergetag(struct rev_info *opt, static void show_mergetag(struct rev_info *opt, struct commit *commit) { - 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 */ - show_one_mergetag(opt, extra, commit); - } - free_commit_extra_headers(to_free); + for_each_mergetag(show_one_mergetag, commit, opt); } void show_log(struct rev_info *opt) |