All of lore.kernel.org
 help / color / mirror / Atom feed
From: Koosha Khajehmoogahi <koosha.khajeh@gmail.com>
To: git <git@vger.kernel.org>
Subject: [PATCH] [RFC] Add a new config. option for skipping merges in git-log
Date: Mon, 16 Mar 2015 17:04:41 +0100	[thread overview]
Message-ID: <5506FF19.1050307@gmail.com> (raw)
In-Reply-To: <5506F652.7050700@posteo.de>

This patch adds a 'showmerges' config. option for git-log.
This option determines whether the log should contain merge
commits or not. In essence, if this option is set to false,
git-log will be run as 'git-log --no-merges'.

To force git-log to show merges even if 'log.showmerges' is
set, we use --include-merges command line option.

Signed-off-by: Koosha Khajehmoogahi <koosha.khajeh@gmail.com>
---
 Documentation/config.txt | 3 +++
 builtin/log.c            | 9 +++++++++
 revision.c               | 2 ++
 revision.h               | 1 +
 4 files changed, 15 insertions(+)

This is the third time I send this patch as it seems it didn't
get delivered even after one hour!

Please help me with this patch. It seems that my --include-merges
command-line option does not have have any effect on the behavior
of git-log. I don't know why the value of force_show_merges is
always 0!

diff --git a/Documentation/config.txt b/Documentation/config.txt
index 1530255..7775b8c 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -1735,6 +1735,9 @@ log.showroot::
 	Tools like linkgit:git-log[1] or linkgit:git-whatchanged[1], which
 	normally hide the root commit will now show it. True by default.
 
+log.showmerges::
+	If true, merges will be shown in the log list. True by default.
+
 log.mailmap::
 	If true, makes linkgit:git-log[1], linkgit:git-show[1], and
 	linkgit:git-whatchanged[1] assume `--use-mailmap`.
diff --git a/builtin/log.c b/builtin/log.c
index dd8f3fc..867bcf2 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -31,6 +31,7 @@ static const char *default_date_mode = NULL;
 
 static int default_abbrev_commit;
 static int default_show_root = 1;
+static int default_max_parents = -1;
 static int decoration_style;
 static int decoration_given;
 static int use_mailmap_config;
@@ -108,6 +109,8 @@ static void cmd_log_init_defaults(struct rev_info *rev)
 	rev->diffopt.stat_graph_width = -1; /* respect statGraphWidth config */
 	rev->abbrev_commit = default_abbrev_commit;
 	rev->show_root_diff = default_show_root;
+	if (rev->force_show_merges == 0)
+		rev->max_parents = default_max_parents;
 	rev->subject_prefix = fmt_patch_subject_prefix;
 	DIFF_OPT_SET(&rev->diffopt, ALLOW_TEXTCONV);
 
@@ -390,6 +393,12 @@ static int git_log_config(const char *var, const char *value, void *cb)
 		default_show_root = git_config_bool(var, value);
 		return 0;
 	}
+
+	if (!strcmp(var, "log.showmerges")) {
+		default_max_parents = git_config_bool(var, value) ? -1 : 1;
+		return 0;
+	}
+
 	if (skip_prefix(var, "color.decorate.", &slot_name))
 		return parse_decorate_color_config(var, slot_name, value);
 	if (!strcmp(var, "log.mailmap")) {
diff --git a/revision.c b/revision.c
index 66520c6..e7073b8 100644
--- a/revision.c
+++ b/revision.c
@@ -1804,6 +1804,8 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg
 		revs->min_parents = 2;
 	} else if (!strcmp(arg, "--no-merges")) {
 		revs->max_parents = 1;
+	} else if (!strcmp(arg, "--include-merges")) {
+		revs->force_show_merges = 1;
 	} else if (starts_with(arg, "--min-parents=")) {
 		revs->min_parents = atoi(arg+14);
 	} else if (starts_with(arg, "--no-min-parents")) {
diff --git a/revision.h b/revision.h
index 0ea8b4e..f496472 100644
--- a/revision.h
+++ b/revision.h
@@ -145,6 +145,7 @@ struct rev_info {
 	unsigned int	track_linear:1,
 			track_first_time:1,
 			linear:1;
+	unsigned int force_show_merges:1;
 
 	enum date_mode date_mode;
 
-- 
1.9.1

  reply	other threads:[~2015-03-16 16:05 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-16 14:23 [PATCH] [RFC] Add a new config. option for skipping merges in git-log Koosha Khajehmoogahi
2015-03-16 15:27 ` Koosha Khajehmoogahi
2015-03-16 16:04   ` Koosha Khajehmoogahi [this message]
2015-03-16 17:53 ` Junio C Hamano
2015-03-16 19:33   ` Koosha Khajehmoogahi
2015-03-16 20:50     ` Junio C Hamano
2015-03-16 20:59       ` Koosha Khajehmoogahi
2015-03-16 21:58         ` Junio C Hamano

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=5506FF19.1050307@gmail.com \
    --to=koosha.khajeh@gmail.com \
    --cc=git@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.