]> git.ipfire.org Git - thirdparty/git.git/commitdiff
log_tree_diff: get rid of code duplication for first_parent_only
authorSergey Organov <sorganov@gmail.com>
Fri, 28 Aug 2020 11:05:25 +0000 (14:05 +0300)
committerJunio C Hamano <gitster@pobox.com>
Sun, 6 Sep 2020 17:33:19 +0000 (10:33 -0700)
Handle first_parent_only by breaking from generic loop early
rather than by duplicating (part of) the loop body.

Signed-off-by: Sergey Organov <sorganov@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
log-tree.c

index 55a68d0c6101a7a287c9544e1963427fd0b77793..c01932fa72bf32e4b5de401c64344f8bd509cb68 100644 (file)
@@ -922,21 +922,10 @@ static int log_tree_diff(struct rev_info *opt, struct commit *commit, struct log
                        return 0;
                else if (opt->combine_merges)
                        return do_diff_combined(opt, commit);
-               else if (opt->first_parent_only) {
-                       /*
-                        * Generate merge log entry only for the first
-                        * parent, showing summary diff of the others
-                        * we merged _in_.
-                        */
-                       parse_commit_or_die(parents->item);
-                       diff_tree_oid(get_commit_tree_oid(parents->item),
-                                     oid, "", &opt->diffopt);
-                       log_tree_diff_flush(opt);
-                       return !opt->loginfo;
+               else if (!opt->first_parent_only) {
+                       /* If we show multiple diffs, show the parent info */
+                       log->parent = parents->item;
                }
-
-               /* If we show individual diffs, show the parent info */
-               log->parent = parents->item;
        }
 
        showed_log = 0;
@@ -952,7 +941,7 @@ static int log_tree_diff(struct rev_info *opt, struct commit *commit, struct log
 
                /* Set up the log info for the next parent, if any.. */
                parents = parents->next;
-               if (!parents)
+               if (!parents || opt->first_parent_only)
                        break;
                log->parent = parents->item;
                opt->loginfo = log;