git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Sergey Organov <sorganov@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: Jeff King <peff@peff.net>, Philip Oakley <philipoakley@iee.email>,
	Elijah Newren <newren@gmail.com>,
	Felipe Contreras <felipe.contreras@gmail.com>,
	git@vger.kernel.org, Sergey Organov <sorganov@gmail.com>
Subject: [PATCH v3 00/32] git-log: implement new --diff-merge options
Date: Mon, 21 Dec 2020 18:19:28 +0300	[thread overview]
Message-ID: <20201221152000.13134-1-sorganov@gmail.com> (raw)
In-Reply-To: <20201101193330.24775-1-sorganov@gmail.com>

These patch series implement new set of options governing diff output
of merge commits, all under the umbrella of single
--diff-merges=<mode> option.

Unlike original -c/--cc options, these new options do not imply -p,
thus allowing for getting diffs for merge commits without provoking of
diff output for regular, non-merge commits. E.g.:

  git log --diff-merges=cc

will output diffs (in dense-combined format) only for merge commits,
whereas:

  git log --cc

enables diffs for all the commits being output, either merges or
simple ones.

There is also another additional functionality provided, allowing to
get the format of "-p --first-parent" without change in history
traversal that --first-parent option causes, like this:

  git log --diff-merges=first-parent

The net result of these series are the following new options:

--diff-merges=	  |  rough original equivalent
------------------+----------------
1|first-parent    | --first-parent (only diff format implications)
m|separate        | -m and enable diff for merges
c|combined        | -c and enable diff for merges, but not for regulars
cc|dense-combined | --cc and enable diff for merges, but not for
		  |      regulars

The series also cleanup logic of handling of diff merges options and
fix an issue found in the original implementation where logically
mutually exclusive options -m/-c/--cc failed to actually override each
other. Neither semantics of these old options nor their interactions
with other options, such as --first-parent and -p, is supposed to be
changed.

The series start with the set of pure refactoring commits that are expected
to introduce no functional changes. These are all commits up to and
including:

"diff-merges: revise revs->diff flag handling"

The aim of these commits is to isolate options handling for diff merges so
that it could be easily understood and tweaked to ease introduction of the
new options.

Then the fix of -m/-c/-cc overriding issue follows, starting with a failing
test and followed by the fix.

Then follows a little bit of additional refactoring in order to
prepare for introduction of the new options, and finally the series
are finished by the implementation, documentation updates, and
some testing for the new options.

Updates in v3:

  * Fixed all the known style issues

  * Revised -m, -c, and -cc description as suggested by Elijah Newren

  * Removed manual abbrevs for diff-merge options

  * Got rid of if(0) ; idiom

  * Renamed regulars_need_diff to all_need_diff to better reflect
    the meaning of the variable.

  * Moved "diff-merges: handle imply -p on -c/--cc logic for log.c"
    closer to the beginning of the series, where it belongs as being
    pure refactoring of the old code.

  * Added code clarification comments to set_diff_merges()

Updates in v2:

  * Move logic of "-c/--cc imply -p" to this module and do not imply
    -p by new --diff-merges options. Instead enable corresponding diff
    output without affecting non-merge commits. This is the most
    significant change with respect to v1 and it starts at 24/33.

  * Add support for old mnemonics: --diff-merges=(m|c|cc) to help
    those who are used to them, and add --diff-merges=1 to cover all
    variants with short mnemonics.

  * Fixed functions definitions style to have open curly brace on its
    own line, pointed to by Junio C Hamano.

  * Tweak --diff-merges=first-parent description, requested by Elijah
    Newren.

  * Fixed git-show documentation not to include description chunk
    relevant to git-log only, noticed by Elijah Newren.

  * Fixed documentation mistake claiming that -p is needed for
    diff-merges options to take effect, noticed by Elijah Newren.

  * Fixed a case where a change was put into wrong commit. The change
    moved to 11/27 form 10/27. Didn't affect end-result in any way.

  * Added short module description to diff-merges.h, as suggested by
    Junio C Hamano.

  * Fixed not returning "argcount" from	diff_merges_parse_opts(),
    noticed by Junio C Hamano.

Updates in v1:

  * Added documentation fix for git-show to include --diff-merges.

  * Fixed typos in commit messages noticed by Philip Oakley.

Signed-off-by: Sergey Organov <sorganov@gmail.com>

Sergey Organov (32):
  revision: factor out parsing of diff-merge related options
  revision: factor out setup of diff-merge related settings
  revision: factor out initialization of diff-merge related settings
  revision: provide implementation for diff merges tweaks
  revision: move diff merges functions to its own diff-merges.c
  diff-merges: rename all functions to have common prefix
  diff-merges: move checks for first_parent_only out of the module
  diff-merges: rename diff_merges_default_to_enable() to match semantics
  diff-merges: re-arrange functions to match the order they are called
    in
  diff-merges: new function diff_merges_suppress()
  diff-merges: new function diff_merges_set_dense_combined_if_unset()
  diff-merges: introduce revs->first_parent_merges flag
  diff-merges: handle imply -p on -c/--cc logic for log.c
  diff-merges: revise revs->diff flag handling
  t4013: support test_expect_failure through ':failure' magic
  t4013: add tests for -m failing to override -c/--cc
  diff-merges: fix -m to properly override -c/--cc
  diff-merges: split 'ignore_merges' field
  diff-merges: group diff-merge flags next to each other inside
    'rev_info'
  diff-merges: get rid of now empty diff_merges_init_revs()
  diff-merges: refactor opt settings into separate functions
  diff-merges: make -m/-c/--cc explicitly mutually exclusive
  diff-merges: implement new values for --diff-merges
  diff-merges: do not imply -p for new options
  diff-merges: let new options enable diff without -p
  diff-merges: add old mnemonic counterparts to --diff-merges
  diff-merges: add '--diff-merges=1' as synonym for 'first-parent'
  doc/git-log: describe new --diff-merges options
  doc/diff-generate-patch: mention new --diff-merges option
  doc/rev-list-options: document --first-parent changes merges format
  doc/git-show: include --diff-merges description
  t4013: add tests for --diff-merges=first-parent

 Documentation/diff-generate-patch.txt         |   6 +-
 Documentation/diff-options.txt                |  51 +++++
 Documentation/git-log.txt                     |  46 +---
 Documentation/git-show.txt                    |   7 +-
 Documentation/rev-list-options.txt            |   5 +
 Makefile                                      |   1 +
 builtin/diff-files.c                          |   5 +-
 builtin/diff.c                                |   9 +-
 builtin/log.c                                 |  22 +-
 builtin/merge.c                               |   3 +-
 diff-merges.c                                 | 146 +++++++++++++
 diff-merges.h                                 |  24 +++
 fmt-merge-msg.c                               |   3 +-
 log-tree.c                                    |  30 +--
 revision.c                                    |  38 +---
 revision.h                                    |   9 +-
 t/t4013-diff-various.sh                       |  11 +-
 t/t4013/diff.log_--cc_-m_-p_master            | 200 ++++++++++++++++++
 ...diff.log_--diff-merges=first-parent_master |  56 +++++
 t/t4013/diff.log_-c_-m_-p_master              | 200 ++++++++++++++++++
 ...f.log_-p_--diff-merges=first-parent_master | 137 ++++++++++++
 21 files changed, 893 insertions(+), 116 deletions(-)
 create mode 100644 diff-merges.c
 create mode 100644 diff-merges.h
 create mode 100644 t/t4013/diff.log_--cc_-m_-p_master
 create mode 100644 t/t4013/diff.log_--diff-merges=first-parent_master
 create mode 100644 t/t4013/diff.log_-c_-m_-p_master
 create mode 100644 t/t4013/diff.log_-p_--diff-merges=first-parent_master

Interdiff against v2:
diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt
index 98db2be423dc..c995e82584f3 100644
--- a/Documentation/diff-options.txt
+++ b/Documentation/diff-options.txt
@@ -55,8 +55,7 @@ ifdef::git-log[]
 -m:::
 	This makes merge commits show the full diff with respect to
 	each of the parents. Separate log entry and diff is generated
-	for each parent. `-m` is different in that it doesn't produce
-	any output without `-p`.
+	for each parent. `-m` doesn't produce any output without `-p`.
 +
 --diff-merges=combined:::
 --diff-merges=c:::
@@ -65,8 +64,8 @@ ifdef::git-log[]
 	differences from each of the parents to the merge result
 	simultaneously instead of showing pairwise diff between a
 	parent and the result one at a time. Furthermore, it lists
-	only files which were modified from all parents. Historically,
-	`-c` enables diff output for non-merge commits as well.
+	only files which were modified from all parents. `-c` implies
+	`-p`.
 +
 --diff-merges=dense-combined:::
 --diff-merges=cc:::
@@ -75,8 +74,7 @@ ifdef::git-log[]
 	`--diff-merges=combined` is further compressed by omitting
 	uninteresting hunks whose contents in the parents have only
 	two variants and the merge result picks one of them without
-	modification.  Historically, `--c` enables diff output for
-	non-merge commits as well.
+	modification.  `--cc` implies `-p`.
 
 --combined-all-paths::
 	This flag causes combined diffs (used for merge commits) to
diff --git a/diff-merges.c b/diff-merges.c
index 63a0d78b7730..146bb50316a6 100644
--- a/diff-merges.c
+++ b/diff-merges.c
@@ -54,23 +54,22 @@ static void set_diff_merges(struct rev_info *revs, const char *optarg)
 {
 	if (!strcmp(optarg, "off") || !strcmp(optarg, "none")) {
 		suppress(revs);
+		/* Return early to leave revs->merges_need_diff unset */
 		return;
 	}
-	if (0) ;
-	else if (!strcmp(optarg, "first") || !strcmp(optarg, "first-parent") ||
-		 !strcmp(optarg, "1"))
+
+	if (!strcmp(optarg, "1") || !strcmp(optarg, "first-parent"))
 		set_first_parent(revs);
-	else if (!strcmp(optarg, "sep")   || !strcmp(optarg, "separate") ||
-		 !strcmp(optarg, "m"))
+	else if (!strcmp(optarg, "m") || !strcmp(optarg, "separate"))
 		set_separate(revs);
-	else if (!strcmp(optarg, "comb")  || !strcmp(optarg, "combined") ||
-		 !strcmp(optarg, "c"))
+	else if (!strcmp(optarg, "c") || !strcmp(optarg, "combined"))
 		set_combined(revs);
-	else if (!strcmp(optarg, "dense") || !strcmp(optarg, "dense-combined") ||
-		 !strcmp(optarg, "cc"))
+	else if (!strcmp(optarg, "cc") || !strcmp(optarg, "dense-combined"))
 		set_dense_combined(revs);
 	else
 		die(_("unknown value for --diff-merges: %s"), optarg);
+
+	/* The flag is cleared by set_xxx() functions, so don't move this up */
 	revs->merges_need_diff = 1;
 }
 
@@ -84,23 +83,21 @@ int diff_merges_parse_opts(struct rev_info *revs, const char **argv)
 	const char *optarg;
 	const char *arg = argv[0];
 
-	if (!strcmp(arg, "-m"))
+	if (!strcmp(arg, "-m")) {
 		set_m(revs);
-	else if (!strcmp(arg, "-c")) {
+	} else if (!strcmp(arg, "-c")) {
 		set_combined(revs);
 		revs->combined_imply_patch = 1;
-	}
-	else if (!strcmp(arg, "--cc")) {
+	} else if (!strcmp(arg, "--cc")) {
 		set_dense_combined(revs);
 		revs->combined_imply_patch = 1;
-	}
-	else if (!strcmp(arg, "--no-diff-merges"))
+	} else if (!strcmp(arg, "--no-diff-merges")) {
 		suppress(revs);
-	else if (!strcmp(arg, "--combined-all-paths"))
+	} else if (!strcmp(arg, "--combined-all-paths")) {
 		revs->combined_all_paths = 1;
-	else if ((argcount = parse_long_opt("diff-merges", argv, &optarg)))
+	} else if ((argcount = parse_long_opt("diff-merges", argv, &optarg))) {
 		set_diff_merges(revs, optarg);
-	else
+	} else
 		return 0;
 
 	revs->explicit_diff_merges = 1;
@@ -140,10 +137,8 @@ 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->combined_imply_patch)
 		revs->diff = 1;
-
 	if (revs->combined_imply_patch || revs->merges_need_diff) {
 		if (!revs->diffopt.output_format)
 			revs->diffopt.output_format = DIFF_FORMAT_PATCH;
diff --git a/log-tree.c b/log-tree.c
index 67060492ca0a..9f50a81e537e 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -900,9 +900,9 @@ static int log_tree_diff(struct rev_info *opt, struct commit *commit, struct log
 	struct commit_list *parents;
 	struct object_id *oid;
 	int is_merge;
-	int regulars_need_diff = opt->diff || opt->diffopt.flags.exit_with_status;
+	int all_need_diff = opt->diff || opt->diffopt.flags.exit_with_status;
 
-	if (!regulars_need_diff && !opt->merges_need_diff)
+	if (!all_need_diff && !opt->merges_need_diff)
 		return 0;
 
 	parse_commit_or_die(commit);
@@ -910,7 +910,7 @@ static int log_tree_diff(struct rev_info *opt, struct commit *commit, struct log
 
 	parents = get_saved_parents(opt, commit);
 	is_merge = parents && parents->next;
-	if(!is_merge && !regulars_need_diff)
+	if (!is_merge && !all_need_diff)
 		return 0;
 
 	/* Root commit? */
-- 
2.25.1


  parent reply	other threads:[~2020-12-21 18:10 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
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 ` Sergey Organov [this message]
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

  List information: http://vger.kernel.org/majordomo-info.html

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

  git send-email \
    --in-reply-to=20201221152000.13134-1-sorganov@gmail.com \
    --to=sorganov@gmail.com \
    --cc=felipe.contreras@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=newren@gmail.com \
    --cc=peff@peff.net \
    --cc=philipoakley@iee.email \
    /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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).