diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-08-03 11:01:20 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-08-03 11:01:20 -0700 |
commit | 2dded96052114c7b902d90f80f75a30eb64d860a (patch) | |
tree | f8c7116edec1c72755cf3f1f62176a9acbc5a2ec /builtin/log.c | |
parent | 178d2c7a7fdf0af639078963acfa6d56bad278ca (diff) | |
parent | 076c98372e7d3c86d269c1526349a67b73904330 (diff) | |
download | git-2dded96052114c7b902d90f80f75a30eb64d860a.tar.gz |
Merge branch 'dt/log-follow-config'
Add a new configuration variable to enable "--follow" automatically
when "git log" is run with one pathspec argument.
* dt/log-follow-config:
log: add "log.follow" configuration variable
Diffstat (limited to 'builtin/log.c')
-rw-r--r-- | builtin/log.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/builtin/log.c b/builtin/log.c index 93025d08cd..c851c7cc23 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -32,6 +32,7 @@ static const char *default_date_mode = NULL; static int default_abbrev_commit; static int default_show_root = 1; +static int default_follow; static int decoration_style; static int decoration_given; static int use_mailmap_config; @@ -103,6 +104,8 @@ static void cmd_log_init_defaults(struct rev_info *rev) { if (fmt_pretty) get_commit_format(fmt_pretty, rev); + if (default_follow) + DIFF_OPT_SET(&rev->diffopt, DEFAULT_FOLLOW_RENAMES); rev->verbose_header = 1; DIFF_OPT_SET(&rev->diffopt, RECURSIVE); rev->diffopt.stat_width = -1; /* use full terminal width */ @@ -391,6 +394,10 @@ 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.follow")) { + default_follow = git_config_bool(var, value); + return 0; + } if (skip_prefix(var, "color.decorate.", &slot_name)) return parse_decorate_color_config(var, slot_name, value); if (!strcmp(var, "log.mailmap")) { @@ -619,6 +626,14 @@ int cmd_log_reflog(int argc, const char **argv, const char *prefix) return cmd_log_walk(&rev); } +static void default_follow_tweak(struct rev_info *rev, + struct setup_revision_opt *opt) +{ + if (DIFF_OPT_TST(&rev->diffopt, DEFAULT_FOLLOW_RENAMES) && + rev->prune_data.nr == 1) + DIFF_OPT_SET(&rev->diffopt, FOLLOW_RENAMES); +} + int cmd_log(int argc, const char **argv, const char *prefix) { struct rev_info rev; @@ -632,6 +647,7 @@ int cmd_log(int argc, const char **argv, const char *prefix) memset(&opt, 0, sizeof(opt)); opt.def = "HEAD"; opt.revarg_opt = REVARG_COMMITTISH; + opt.tweak = default_follow_tweak; cmd_log_init(argc, argv, prefix, &rev, &opt); return cmd_log_walk(&rev); } |