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
next prev parent 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.