That was me! :-) Not long after I sent you a new link with the patch below, but I suppose you missed it. My first rough attempt was incomplete, changing the behavior from on/auto on to auto/off instead of the intended on/auto/off. The docs changes look good to me (but should perhaps be squashed into the impl patch?). Not sure how many of the negatable long options that exist are actually documented as such, but imho. they should be. There are no added tests, but there are no tests for -f/--show-name in the first place and I just didn't get around to writing one... Øsse --- builtin/blame.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/builtin/blame.c b/builtin/blame.c index a9fe8cf7a6..cbaae91a8f 100644 --- a/builtin/blame.c +++ b/builtin/blame.c @@ -49,6 +49,7 @@ static int blank_boundary; static int incremental; static int xdl_opts; static int abbrev = -1; +static int show_name = -1; static int no_whole_file_rename; static int show_progress; static char repeated_meta_color[COLOR_MAXLEN]; @@ -621,7 +622,8 @@ static void find_alignment(struct blame_scoreboard *sb, int *option) if (compute_auto_abbrev) auto_abbrev = update_auto_abbrev(auto_abbrev, suspect); if (strcmp(suspect->path, sb->path)) - *option |= OUTPUT_SHOW_NAME; + if (show_name == -1) + *option |= OUTPUT_SHOW_NAME; num = strlen(suspect->path); if (longest_file < num) longest_file = num; @@ -867,7 +869,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix) OPT_BOOL(0, "show-stats", &show_stats, N_("show work cost statistics")), OPT_BOOL(0, "progress", &show_progress, N_("force progress reporting")), OPT_BIT(0, "score-debug", &output_option, N_("show output score for blame entries"), OUTPUT_SHOW_SCORE), - OPT_BIT('f', "show-name", &output_option, N_("show original filename (Default: auto)"), OUTPUT_SHOW_NAME), + OPT_BOOL('f', "show-name", &show_name, N_("show original filename (Default: auto)")), OPT_BIT('n', "show-number", &output_option, N_("show original linenumber (Default: off)"), OUTPUT_SHOW_NUMBER), OPT_BIT('p', "porcelain", &output_option, N_("show in a format designed for machine consumption"), OUTPUT_PORCELAIN), OPT_BIT(0, "line-porcelain", &output_option, N_("show porcelain format with per-line commit information"), OUTPUT_PORCELAIN|OUTPUT_LINE_PORCELAIN), @@ -943,6 +945,9 @@ int cmd_blame(int argc, const char **argv, const char *prefix) revs.diffopt.flags.follow_renames = 0; argc = parse_options_end(&ctx); + if (show_name == 1) + output_option |= OUTPUT_SHOW_NAME; + prepare_repo_settings(the_repository); the_repository->settings.command_requires_full_index = 0; -- 2.34.1