git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Elijah Newren <newren@gmail.com>
To: Sergey Organov <sorganov@gmail.com>
Cc: Junio C Hamano <gitster@pobox.com>, Jeff King <peff@peff.net>,
	Philip Oakley <philipoakley@iee.email>,
	Git Mailing List <git@vger.kernel.org>
Subject: Re: [PATCH v2 26/33] diff-merges: let new options enable diff without -p
Date: Fri, 18 Dec 2020 09:01:36 -0800	[thread overview]
Message-ID: <CABPp-BG4GEmv20YK39M51nzTYVZtcLgD-UbmQLfgynjUhBKx9w@mail.gmail.com> (raw)
In-Reply-To: <87wnxfb2gt.fsf@osv.gnss.ru>

On Fri, Dec 18, 2020 at 6:42 AM Sergey Organov <sorganov@gmail.com> wrote:
>
> Elijah Newren <newren@gmail.com> writes:
>
> > On Wed, Dec 16, 2020 at 10:50 AM Sergey Organov <sorganov@gmail.com> wrote:
> >>
> >> New options don't have any visible effect unless -p is either given or
> >> implied, as unlike -c/-cc we don't imply -p with --diff-merges. To fix
> >> this, this patch adds new functionality by letting new options enable
> >> output of diffs for merge commits only.
> >>
> >> Add 'merges_need_diff' field and set it whenever diff output for merges is
> >> enabled by any of the new options.
> >>
> >> Extend diff output logic accordingly, to output diffs for merges when
> >> 'merges_need_diff' is set even when no -p has been provided.
> >>
> >> Signed-off-by: Sergey Organov <sorganov@gmail.com>
> >> ---
> >>  diff-merges.c | 16 ++++++++++------
> >>  log-tree.c    | 13 +++++++++----
> >>  revision.h    |  1 +
> >>  3 files changed, 20 insertions(+), 10 deletions(-)
> >>
> >> diff --git a/diff-merges.c b/diff-merges.c
> >> index 725db2312074..ffe20d8daa4a 100644
> >> --- a/diff-merges.c
> >> +++ b/diff-merges.c
> >> @@ -10,6 +10,7 @@ static void suppress(struct rev_info *revs)
> >>         revs->dense_combined_merges = 0;
> >>         revs->combined_all_paths = 0;
> >>         revs->combined_imply_patch = 0;
> >> +       revs->merges_need_diff = 0;
> >>  }
> >>
> >>  static void set_separate(struct rev_info *revs)
> >> @@ -51,9 +52,11 @@ static void set_dense_combined(struct rev_info *revs)
> >>
> >>  static void set_diff_merges(struct rev_info *revs, const char *optarg)
> >>  {
> >
> >> +       if (!strcmp(optarg, "off") || !strcmp(optarg, "none")) {
> >> +               suppress(revs);
> >> +               return;
> >> +       }
> >>         if (0) ;
> >> -       else if (!strcmp(optarg, "off")   || !strcmp(optarg, "none"))
> >> -               suppress(revs);
> >
> > The "if (0) ;" is still really weird.
>
> An idiom (see my previous answer). I'm fine getting rid of it if you
> guys find it weird (that I'm not).

I've never seen this idiom, and we apparently have no uses of it in
the code.  If it were near any code I was editing, I think I'd rip it
out as a preliminary cleanup patch...but maybe others have other
opinions.

> >
> >>         else if (!strcmp(optarg, "first") || !strcmp(optarg, "first-parent"))
> >>                 set_first_parent(revs);
> >>         else if (!strcmp(optarg, "sep")   || !strcmp(optarg, "separate"))
> >> @@ -64,6 +67,7 @@ static void set_diff_merges(struct rev_info *revs, const char *optarg)
> >>                 set_dense_combined(revs);
> >>         else
> >>                 die(_("unknown value for --diff-merges: %s"), optarg);
> >> +       revs->merges_need_diff = 1;
> >
> > I'd put this above the if-else-else block, to make it clearer why you
> > are returning early for the "off"/"none" case.
>
> Yeah, makes sense, thanks!
>
> >
> >>  }
> >>
> >>  /*
> >> @@ -132,12 +136,12 @@ void diff_merges_setup_revs(struct rev_info *revs)
> >>                 revs->first_parent_merges = 0;
> >>         if (revs->combined_all_paths && !revs->combine_merges)
> >>                 die("--combined-all-paths makes no sense without -c or --cc");
> >> -       if (revs->combine_merges)
> >> +
> >> +       if (revs->combined_imply_patch)
> >>                 revs->diff = 1;
> >> -       if (revs->combined_imply_patch) {
> >> -               /* Turn --cc/-c into -p --cc/-c when -p was not given */
> >> +
> >> +       if (revs->combined_imply_patch || revs->merges_need_diff) {
> >>                 if (!revs->diffopt.output_format)
> >>                         revs->diffopt.output_format = DIFF_FORMAT_PATCH;
> >>         }
> >> -
> >
> > The random space changes squashed in here instead of being combined
> > with the earlier patches that introduced the relevant areas break up
> > the reading.  Would be nice to clean this up.
> >
> >>  }
> >> diff --git a/log-tree.c b/log-tree.c
> >> index f9385b1dae6f..67060492ca0a 100644
> >> --- a/log-tree.c
> >> +++ b/log-tree.c
> >> @@ -899,15 +899,21 @@ static int log_tree_diff(struct rev_info *opt, struct commit *commit, struct log
> >>         int showed_log;
> >>         struct commit_list *parents;
> >>         struct object_id *oid;
> >> +       int is_merge;
> >> +       int regulars_need_diff = opt->diff || opt->diffopt.flags.exit_with_status;
> >
> > So rev_info.diff has changed in meaning from
> > commits-need-to-show-a-diff, to non-merge-commits-need-to-show-a-diff.
> > That's a somewhat subtle semantic shift.  Perhaps it's worth adding a
> > comment to the declaration of rev_info.diff to highlight this?  (And
> > perhaps even rename the flag?)
>
> No, the meaning of rev_info.diff hopefully didn't change. rev_info.diff
> still enables all the commits to pass further once set. It is still
> exactly the same old condition, just assigned to a variable for reuse.
> My aim was to avoid touching existing logic of this function and only
> add a new functionality when opt->merges_need_diff is set.
>
> It looks like I rather choose confusing name for the variable, and it'd
> be more clear if I'd call this, say:
>
>   int need_diff = opt->diff || opt->diffopt.flags.exit_with_status;
>
> ?
>
> What do you think?

I think need_diff would actually be confusing.  It can be false when
you need diffs (e.g. --diff-merges=cc with no -p, because then you'd
need diffs for merge commits and not for non-merge commits).  I'd
stick with your original local variable name.

Perhaps opt->diff hasn't changed meaning and I just had a wrong mental
model in my head for what it meant, but even then what seems like its
obvious purpose given its name is mismatched with what it actually
does.  Since you are already changing struct rev_info in this series,
this was more a note that a name change or at least a comment for
opt->diff might be useful.  I mean, you asked a couple times on the
previous series for help trying to understand it, and I could only
offer some flailing guesses and Junio responded with a couple bits of
history.  Clearly, it isn't very clear and this patch reminded me of
that and made me wonder if we're possibly making it a little harder
for others further down the road to figure out.

> >> -       if (!opt->diff && !opt->diffopt.flags.exit_with_status)
> >> +       if (!regulars_need_diff && !opt->merges_need_diff)
> >>                 return 0;
> >>
> >>         parse_commit_or_die(commit);
> >>         oid = get_commit_tree_oid(commit);
> >>
> >> -       /* Root commit? */
> >>         parents = get_saved_parents(opt, commit);
> >> +       is_merge = parents && parents->next;
> >> +       if(!is_merge && !regulars_need_diff)
> >> +               return 0;
> >> +
> >> +       /* Root commit? */
> >>         if (!parents) {
> >>                 if (opt->show_root_diff) {
> >>                         diff_root_tree_oid(oid, "", &opt->diffopt);
> >> @@ -916,8 +922,7 @@ static int log_tree_diff(struct rev_info *opt, struct commit *commit, struct log
> >>                 return !opt->loginfo;
> >>         }
> >>
> >> -       /* More than one parent? */
> >> -       if (parents->next) {
> >> +       if (is_merge) {
> >>                 if (opt->combine_merges)
> >>                         return do_diff_combined(opt, commit);
> >>                 if (opt->separate_merges) {
> >> diff --git a/revision.h b/revision.h
> >> index bfbae526ad6e..494d86142454 100644
> >> --- a/revision.h
> >> +++ b/revision.h
> >> @@ -194,6 +194,7 @@ struct rev_info {
> >>                         always_show_header:1,
> >>                         /* Diff-merge flags */
> >>                         explicit_diff_merges: 1,
> >> +                       merges_need_diff: 1,
> >>                         separate_merges: 1,
> >>                         combine_merges:1,
> >>                         combined_all_paths:1,
> >> --
> >> 2.25.1
> >
> > The rest makes sense.
>
> Thanks,
> -- Sergey

  reply	other threads:[~2020-12-18 17:02 UTC|newest]

Thread overview: 232+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-01 19:33 [PATCH 00/26] git-log: implement new --diff-merge options Sergey Organov
2020-11-01 19:33 ` [PATCH 01/26] revision: factor out parsing of diff-merge related options Sergey Organov
2020-11-01 19:33 ` [PATCH 02/26] revision: factor out setup of diff-merge related settings Sergey Organov
2020-11-01 19:33 ` [PATCH 03/26] revision: factor out initialization " Sergey Organov
2020-11-01 19:33 ` [PATCH 04/26] revision: provide implementation for diff merges tweaks Sergey Organov
2020-11-01 19:33 ` [PATCH 05/26] revision: move diff merges functions to its own diff-merges.c Sergey Organov
2020-11-01 19:33 ` [PATCH 06/26] diff-merges: rename all functions to have common prefix Sergey Organov
2020-11-01 19:33 ` [PATCH 07/26] diff-merges: move checks for first_parent_only out of the module Sergey Organov
2020-11-01 19:33 ` [PATCH 08/26] diff-merges: rename diff_merges_default_to_enable() to match semantics Sergey Organov
2020-11-01 19:33 ` [PATCH 09/26] diff-merges: re-arrange functions to match the order they are called in Sergey Organov
2020-11-01 19:33 ` [PATCH 10/26] diff-merges: new function diff_merges_suppress() Sergey Organov
2020-12-03  5:52   ` Elijah Newren
2020-12-03 20:06     ` Sergey Organov
2020-12-03 20:28       ` Elijah Newren
2020-12-04 17:23         ` Sergey Organov
2020-11-01 19:33 ` [PATCH 11/26] diff-merges: new function diff_merges_set_dense_combined_if_unset() Sergey Organov
2020-11-01 19:33 ` [PATCH 12/26] diff-merges: introduce revs->first_parent_merges flag Sergey Organov
2020-11-01 19:33 ` [PATCH 13/26] diff-merges: revise revs->diff flag handling Sergey Organov
2020-11-01 19:33 ` [PATCH 14/26] t4013: support test_expect_failure through ':failure' magic Sergey Organov
2020-11-01 19:33 ` [PATCH 15/26] t4013: add tests for -m failing to override -c/--cc Sergey Organov
2020-11-01 19:33 ` [PATCH 16/26] diff-merges: fix -m to properly " Sergey Organov
2020-11-01 19:33 ` [PATCH 17/26] diff-merges: split 'ignore_merges' field Sergey Organov
2020-11-02 10:48   ` Philip Oakley
2020-11-02 16:15     ` Sergey Organov
2020-11-01 19:33 ` [PATCH 18/26] diff-merges: group diff-merge flags next to each other inside 'rev_info' Sergey Organov
2020-11-01 19:33 ` [PATCH 19/26] diff-merges: get rid of now empty diff_merges_init_revs() Sergey Organov
2020-11-02 10:51   ` Philip Oakley
2020-11-01 19:33 ` [PATCH 20/26] diff-merges: refactor opt settings into separate functions Sergey Organov
2020-11-01 19:33 ` [PATCH 21/26] diff-merges: make -m/-c/--cc explicitly mutually exclusive Sergey Organov
2020-11-01 19:33 ` [PATCH 22/26] diff-merges: implement new values for --diff-merges Sergey Organov
2020-11-01 19:33 ` [PATCH 23/26] t4013: add test for --diff-merges=first-parent Sergey Organov
2020-11-01 19:33 ` [PATCH 24/26] doc/git-log: describe new --diff-merges options Sergey Organov
2020-11-01 19:33 ` [PATCH 25/26] doc/diff-generate-patch: mention new --diff-merges option Sergey Organov
2020-11-01 19:33 ` [PATCH 26/26] doc/rev-list-options: document --first-parent implies --diff-merges=first-parent Sergey Organov
2020-11-08 21:38 ` [PATCH v1 00/27] git-log: implement new --diff-merge options Sergey Organov
2020-11-08 21:38   ` [PATCH v1 01/27] revision: factor out parsing of diff-merge related options Sergey Organov
2020-12-03  0:33     ` Junio C Hamano
2020-12-03 15:16       ` Sergey Organov
2020-12-04  6:36         ` Junio C Hamano
2020-12-04 19:10           ` Sergey Organov
2020-11-08 21:38   ` [PATCH v1 02/27] revision: factor out setup of diff-merge related settings Sergey Organov
2020-12-03  0:34     ` Junio C Hamano
2020-11-08 21:38   ` [PATCH v1 03/27] revision: factor out initialization " Sergey Organov
2020-12-03  0:39     ` Junio C Hamano
2020-12-03 15:35       ` Sergey Organov
2020-11-08 21:38   ` [PATCH v1 04/27] revision: provide implementation for diff merges tweaks Sergey Organov
2020-12-03  0:51     ` Junio C Hamano
2020-12-03  5:28       ` Junio C Hamano
2020-12-03 16:03         ` Sergey Organov
2020-12-03 17:53       ` Sergey Organov
2020-11-08 21:38   ` [PATCH v1 05/27] revision: move diff merges functions to its own diff-merges.c Sergey Organov
2020-12-03  0:58     ` Junio C Hamano
2020-12-03 16:44       ` Sergey Organov
2020-11-08 21:38   ` [PATCH v1 06/27] diff-merges: rename all functions to have common prefix Sergey Organov
2020-12-03  0:52     ` Junio C Hamano
2020-12-03 17:49       ` Sergey Organov
2020-11-08 21:38   ` [PATCH v1 07/27] diff-merges: move checks for first_parent_only out of the module Sergey Organov
2020-12-03  1:09     ` Junio C Hamano
2020-12-03 20:22       ` Sergey Organov
2020-11-08 21:38   ` [PATCH v1 08/27] diff-merges: rename diff_merges_default_to_enable() to match semantics Sergey Organov
2020-11-08 21:38   ` [PATCH v1 09/27] diff-merges: re-arrange functions to match the order they are called in Sergey Organov
2020-12-03  5:52     ` Elijah Newren
2020-12-03 15:41       ` Sergey Organov
2020-11-08 21:38   ` [PATCH v1 10/27] diff-merges: new function diff_merges_suppress() Sergey Organov
2020-11-08 21:38   ` [PATCH v1 11/27] diff-merges: new function diff_merges_set_dense_combined_if_unset() Sergey Organov
2020-11-08 21:38   ` [PATCH v1 12/27] diff-merges: introduce revs->first_parent_merges flag Sergey Organov
2020-11-08 21:38   ` [PATCH v1 13/27] diff-merges: revise revs->diff flag handling Sergey Organov
2020-11-08 21:38   ` [PATCH v1 14/27] t4013: support test_expect_failure through ':failure' magic Sergey Organov
2020-11-08 21:38   ` [PATCH v1 15/27] t4013: add tests for -m failing to override -c/--cc Sergey Organov
2020-11-08 21:38   ` [PATCH v1 16/27] diff-merges: fix -m to properly " Sergey Organov
2020-11-08 21:38   ` [PATCH v1 17/27] diff-merges: split 'ignore_merges' field Sergey Organov
2020-11-08 21:38   ` [PATCH v1 18/27] diff-merges: group diff-merge flags next to each other inside 'rev_info' Sergey Organov
2020-11-08 21:38   ` [PATCH v1 19/27] diff-merges: get rid of now empty diff_merges_init_revs() Sergey Organov
2020-11-08 21:38   ` [PATCH v1 20/27] diff-merges: refactor opt settings into separate functions Sergey Organov
2020-11-08 21:38   ` [PATCH v1 21/27] diff-merges: make -m/-c/--cc explicitly mutually exclusive Sergey Organov
2020-11-08 21:38   ` [PATCH v1 22/27] diff-merges: implement new values for --diff-merges Sergey Organov
2020-11-08 21:38   ` [PATCH v1 23/27] t4013: add test for --diff-merges=first-parent Sergey Organov
2020-11-08 21:38   ` [PATCH v1 24/27] doc/git-log: describe new --diff-merges options Sergey Organov
2020-12-03  6:09     ` Elijah Newren
2020-12-03 19:34       ` Sergey Organov
2020-12-03 20:22         ` Elijah Newren
2020-12-04 17:34           ` Sergey Organov
2020-12-04 18:33             ` Elijah Newren
2020-12-04 19:58               ` Sergey Organov
2020-12-04 20:01                 ` Elijah Newren
2020-11-08 21:38   ` [PATCH v1 25/27] doc/diff-generate-patch: mention new --diff-merges option Sergey Organov
2020-11-08 21:38   ` [PATCH v1 26/27] doc/rev-list-options: document --first-parent implies --diff-merges=first-parent Sergey Organov
2020-11-08 21:38   ` [PATCH v1 27/27] doc/git-show: include --diff-merges description Sergey Organov
2020-12-03 16:47     ` Elijah Newren
2020-12-03 19:52       ` Sergey Organov
2020-12-03  7:54   ` [PATCH v1 00/27] git-log: implement new --diff-merge options Elijah Newren
2020-12-03 19:48     ` Sergey Organov
2020-12-03 20:39       ` Elijah Newren
2020-12-04 19:23         ` Sergey Organov
2020-12-05 17:49           ` Elijah Newren
2020-12-05 19:44             ` Sergey Organov
2020-12-05 20:09               ` Elijah Newren
2020-12-06 16:39                 ` Sergey Organov
2020-12-08 20:07 ` [PATCH 00/26] " Sergey Organov
2020-12-08 20:52   ` Elijah Newren
2020-12-08 22:30     ` Sergey Organov
2020-12-08 23:11       ` Elijah Newren
2020-12-09  1:17         ` Junio C Hamano
2020-12-09  3:06           ` Elijah Newren
2020-12-09  3:22             ` Junio C Hamano
2020-12-09  3:31               ` Elijah Newren
2020-12-09  4:18                 ` Junio C Hamano
2020-12-09  4:54                   ` Elijah Newren
2020-12-09  5:24                     ` Junio C Hamano
2020-12-09  6:40                       ` Junio C Hamano
2020-12-09 14:08                         ` Sergey Organov
2020-12-09 20:53                           ` Junio C Hamano
2020-12-09 19:44                         ` Sergey Organov
2020-12-10  6:12                           ` Junio C Hamano
2020-12-10  7:26                           ` Elijah Newren
2020-12-10 20:10                             ` Sergey Organov
2020-12-10 21:15                               ` Junio C Hamano
2020-12-10 21:26                             ` Junio C Hamano
2020-12-09 13:34                     ` Sergey Organov
2020-12-16 18:48 ` [PATCH v2 00/33] " Sergey Organov
2020-12-16 18:48   ` [PATCH v2 01/33] revision: factor out parsing of diff-merge related options Sergey Organov
2020-12-16 18:48   ` [PATCH v2 02/33] revision: factor out setup of diff-merge related settings Sergey Organov
2020-12-16 18:48   ` [PATCH v2 03/33] revision: factor out initialization " Sergey Organov
2020-12-16 18:49   ` [PATCH v2 04/33] revision: provide implementation for diff merges tweaks Sergey Organov
2020-12-16 18:49   ` [PATCH v2 05/33] revision: move diff merges functions to its own diff-merges.c Sergey Organov
2020-12-16 18:49   ` [PATCH v2 06/33] diff-merges: rename all functions to have common prefix Sergey Organov
2020-12-16 18:49   ` [PATCH v2 07/33] diff-merges: move checks for first_parent_only out of the module Sergey Organov
2020-12-16 18:49   ` [PATCH v2 08/33] diff-merges: rename diff_merges_default_to_enable() to match semantics Sergey Organov
2020-12-16 18:49   ` [PATCH v2 09/33] diff-merges: re-arrange functions to match the order they are called in Sergey Organov
2020-12-16 18:49   ` [PATCH v2 10/33] diff-merges: new function diff_merges_suppress() Sergey Organov
2020-12-16 18:49   ` [PATCH v2 11/33] diff-merges: new function diff_merges_set_dense_combined_if_unset() Sergey Organov
2020-12-16 18:49   ` [PATCH v2 12/33] diff-merges: introduce revs->first_parent_merges flag Sergey Organov
2020-12-16 18:49   ` [PATCH v2 13/33] diff-merges: revise revs->diff flag handling Sergey Organov
2020-12-16 18:49   ` [PATCH v2 14/33] t4013: support test_expect_failure through ':failure' magic Sergey Organov
2020-12-16 18:49   ` [PATCH v2 15/33] t4013: add tests for -m failing to override -c/--cc Sergey Organov
2020-12-16 18:49   ` [PATCH v2 16/33] diff-merges: fix -m to properly " Sergey Organov
2020-12-16 18:49   ` [PATCH v2 17/33] diff-merges: split 'ignore_merges' field Sergey Organov
2020-12-16 18:49   ` [PATCH v2 18/33] diff-merges: group diff-merge flags next to each other inside 'rev_info' Sergey Organov
2020-12-16 18:49   ` [PATCH v2 19/33] diff-merges: get rid of now empty diff_merges_init_revs() Sergey Organov
2020-12-16 18:49   ` [PATCH v2 20/33] diff-merges: refactor opt settings into separate functions Sergey Organov
2020-12-16 18:49   ` [PATCH v2 21/33] diff-merges: make -m/-c/--cc explicitly mutually exclusive Sergey Organov
2020-12-16 18:49   ` [PATCH v2 22/33] diff-merges: implement new values for --diff-merges Sergey Organov
2020-12-18  5:39     ` Elijah Newren
2020-12-18 14:12       ` Sergey Organov
2020-12-18 16:42         ` Elijah Newren
2020-12-18 21:00           ` Sergey Organov
2020-12-16 18:49   ` [PATCH v2 23/33] diff-merges: fix style of functions definitions Sergey Organov
2020-12-18  5:42     ` Elijah Newren
2020-12-18 13:41       ` Sergey Organov
2020-12-18 16:12         ` Elijah Newren
2020-12-18 21:23           ` Sergey Organov
2020-12-18 22:56             ` Elijah Newren
2020-12-19  1:00               ` Felipe Contreras
2020-12-19 11:59               ` Sergey Organov
2020-12-20 19:15                 ` Sergey Organov
2020-12-21  3:09                   ` Felipe Contreras
2020-12-19  1:41         ` Junio C Hamano
2020-12-16 18:49   ` [PATCH v2 24/33] diff-merges: handle imply -p on -c/--cc logic for log.c Sergey Organov
2020-12-18  6:00     ` Elijah Newren
2020-12-18 14:01       ` Sergey Organov
2020-12-18 16:37         ` Elijah Newren
2020-12-18 21:45           ` Sergey Organov
2020-12-18 22:12             ` Elijah Newren
2020-12-18 22:17               ` Sergey Organov
2020-12-16 18:49   ` [PATCH v2 25/33] diff-merges: do not imply -p for new options Sergey Organov
2020-12-16 18:49   ` [PATCH v2 26/33] diff-merges: let new options enable diff without -p Sergey Organov
2020-12-18  6:12     ` Elijah Newren
2020-12-18 14:42       ` Sergey Organov
2020-12-18 17:01         ` Elijah Newren [this message]
2020-12-18 20:32           ` Sergey Organov
2020-12-18 22:06             ` Elijah Newren
2020-12-18 22:19               ` Sergey Organov
2020-12-18 20:53           ` Sergey Organov
2020-12-19 12:11           ` Sergey Organov
2020-12-19 13:35             ` Felipe Contreras
2020-12-19 16:23               ` Sergey Organov
2020-12-20 19:07         ` Sergey Organov
2020-12-19 13:36     ` Felipe Contreras
2020-12-19 16:19       ` Sergey Organov
2020-12-16 18:49   ` [PATCH v2 27/33] diff-merges: add old mnemonic counterparts to --diff-merges Sergey Organov
2020-12-16 18:49   ` [PATCH v2 28/33] diff-merges: add '--diff-merges=1' as synonym for 'first-parent' Sergey Organov
2020-12-18  6:19     ` Elijah Newren
2020-12-18 14:45       ` Sergey Organov
2020-12-16 18:49   ` [PATCH v2 29/33] doc/git-log: describe new --diff-merges options Sergey Organov
2020-12-18  5:53     ` Elijah Newren
2020-12-18 16:05       ` Sergey Organov
2020-12-18 17:25         ` Elijah Newren
2020-12-18 22:11           ` Sergey Organov
2020-12-18 22:28             ` Elijah Newren
2020-12-16 18:49   ` [PATCH v2 30/33] doc/diff-generate-patch: mention new --diff-merges option Sergey Organov
2020-12-16 18:49   ` [PATCH v2 31/33] doc/rev-list-options: document --first-parent changes merges format Sergey Organov
2020-12-16 18:49   ` [PATCH v2 32/33] doc/git-show: include --diff-merges description Sergey Organov
2020-12-16 18:49   ` [PATCH v2 33/33] t4013: add tests for --diff-merges=first-parent Sergey Organov
2020-12-18  6:54   ` [PATCH v2 00/33] git-log: implement new --diff-merge options Elijah Newren
2020-12-18 13:39     ` Sergey Organov
2020-12-21 15:19 ` [PATCH v3 00/32] " Sergey Organov
2020-12-21 15:19   ` [PATCH v3 01/32] revision: factor out parsing of diff-merge related options Sergey Organov
2020-12-21 15:19   ` [PATCH v3 02/32] revision: factor out setup of diff-merge related settings Sergey Organov
2020-12-21 15:19   ` [PATCH v3 03/32] revision: factor out initialization " Sergey Organov
2020-12-21 15:19   ` [PATCH v3 04/32] revision: provide implementation for diff merges tweaks Sergey Organov
2020-12-21 15:19   ` [PATCH v3 05/32] revision: move diff merges functions to its own diff-merges.c Sergey Organov
2020-12-21 15:19   ` [PATCH v3 06/32] diff-merges: rename all functions to have common prefix Sergey Organov
2020-12-21 15:19   ` [PATCH v3 07/32] diff-merges: move checks for first_parent_only out of the module Sergey Organov
2020-12-21 15:19   ` [PATCH v3 08/32] diff-merges: rename diff_merges_default_to_enable() to match semantics Sergey Organov
2020-12-21 15:19   ` [PATCH v3 09/32] diff-merges: re-arrange functions to match the order they are called in Sergey Organov
2020-12-21 15:19   ` [PATCH v3 10/32] diff-merges: new function diff_merges_suppress() Sergey Organov
2020-12-21 15:19   ` [PATCH v3 11/32] diff-merges: new function diff_merges_set_dense_combined_if_unset() Sergey Organov
2020-12-21 15:19   ` [PATCH v3 12/32] diff-merges: introduce revs->first_parent_merges flag Sergey Organov
2020-12-21 15:19   ` [PATCH v3 13/32] diff-merges: handle imply -p on -c/--cc logic for log.c Sergey Organov
2020-12-21 15:19   ` [PATCH v3 14/32] diff-merges: revise revs->diff flag handling Sergey Organov
2020-12-21 15:19   ` [PATCH v3 15/32] t4013: support test_expect_failure through ':failure' magic Sergey Organov
2020-12-21 15:19   ` [PATCH v3 16/32] t4013: add tests for -m failing to override -c/--cc Sergey Organov
2020-12-21 15:19   ` [PATCH v3 17/32] diff-merges: fix -m to properly " Sergey Organov
2020-12-21 15:19   ` [PATCH v3 18/32] diff-merges: split 'ignore_merges' field Sergey Organov
2020-12-21 15:19   ` [PATCH v3 19/32] diff-merges: group diff-merge flags next to each other inside 'rev_info' Sergey Organov
2020-12-21 15:19   ` [PATCH v3 20/32] diff-merges: get rid of now empty diff_merges_init_revs() Sergey Organov
2020-12-21 15:19   ` [PATCH v3 21/32] diff-merges: refactor opt settings into separate functions Sergey Organov
2020-12-21 15:19   ` [PATCH v3 22/32] diff-merges: make -m/-c/--cc explicitly mutually exclusive Sergey Organov
2020-12-21 15:19   ` [PATCH v3 23/32] diff-merges: implement new values for --diff-merges Sergey Organov
2020-12-21 15:19   ` [PATCH v3 24/32] diff-merges: do not imply -p for new options Sergey Organov
2020-12-21 15:19   ` [PATCH v3 25/32] diff-merges: let new options enable diff without -p Sergey Organov
2020-12-21 18:40     ` Felipe Contreras
2020-12-21 20:07       ` Sergey Organov
2020-12-21 15:19   ` [PATCH v3 26/32] diff-merges: add old mnemonic counterparts to --diff-merges Sergey Organov
2020-12-21 15:19   ` [PATCH v3 27/32] diff-merges: add '--diff-merges=1' as synonym for 'first-parent' Sergey Organov
2020-12-21 15:19   ` [PATCH v3 28/32] doc/git-log: describe new --diff-merges options Sergey Organov
2020-12-21 15:19   ` [PATCH v3 29/32] doc/diff-generate-patch: mention new --diff-merges option Sergey Organov
2020-12-21 15:19   ` [PATCH v3 30/32] doc/rev-list-options: document --first-parent changes merges format Sergey Organov
2020-12-21 15:19   ` [PATCH v3 31/32] doc/git-show: include --diff-merges description Sergey Organov
2020-12-21 15:20   ` [PATCH v3 32/32] t4013: add tests for --diff-merges=first-parent Sergey Organov
2021-01-16  7:01   ` [PATCH v3 00/32] git-log: implement new --diff-merge options Junio C Hamano
2021-01-16  9:17     ` Sergey Organov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CABPp-BG4GEmv20YK39M51nzTYVZtcLgD-UbmQLfgynjUhBKx9w@mail.gmail.com \
    --to=newren@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=peff@peff.net \
    --cc=philipoakley@iee.email \
    --cc=sorganov@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).