From: Junio C Hamano Date: Wed, 20 Dec 2006 21:58:10 +0000 (-0800) Subject: Merge branch 'jc/blame' X-Git-Tag: v1.5.0-rc0~54 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/e035ce939d7e26afee4936ed32f1db9428ac026e?ds=inline;hp=-c Merge branch 'jc/blame' * jc/blame: blame: -b (blame.blankboundary) and --root (blame.showroot) --- e035ce939d7e26afee4936ed32f1db9428ac026e diff --combined builtin-blame.c index 9bf6ec951f,211bdb3a75..4a1accf13c --- a/builtin-blame.c +++ b/builtin-blame.c @@@ -15,10 -15,16 +15,12 @@@ #include "revision.h" #include "xdiff-interface.h" -#include -#include -#include - static char blame_usage[] = "git-blame [-c] [-l] [-t] [-f] [-n] [-p] [-L n,m] [-S ] [-M] [-C] [-C] [commit] [--] file\n" " -c, --compatibility Use the same output mode as git-annotate (Default: off)\n" + " -b Show blank SHA-1 for boundary commits (Default: off)\n" " -l, --long Show long commit SHA1 (Default: off)\n" + " --root Do not treat root commits as boundaries (Default: off)\n" " -t, --time Show raw timestamp (Default: off)\n" " -f, --show-name Show original filename (Default: auto)\n" " -n, --show-number Show original linenumber (Default: off)\n" @@@ -32,6 -38,8 +34,8 @@@ static int longest_author static int max_orig_digits; static int max_digits; static int max_score_digits; + static int show_root; + static int blank_boundary; #ifndef DEBUG #define DEBUG 0 @@@ -1091,6 -1099,9 +1095,9 @@@ static void assign_blame(struct scorebo if (commit->object.parsed) mark_parents_uninteresting(commit); } + /* treat root commit as boundary */ + if (!commit->parents && !show_root) + commit->object.flags |= UNINTERESTING; /* Take responsibility for the remaining entries */ for (ent = sb->ent; ent; ent = ent->next) @@@ -1314,8 -1325,12 +1321,12 @@@ static void emit_other(struct scoreboar int length = (opt & OUTPUT_LONG_OBJECT_NAME) ? 40 : 8; if (suspect->commit->object.flags & UNINTERESTING) { - length--; - putchar('^'); + if (!blank_boundary) { + length--; + putchar('^'); + } + else + memset(hex, ' ', length); } printf("%.*s", length, hex); @@@ -1635,6 -1650,19 +1646,19 @@@ static void prepare_blame_range(struct usage(blame_usage); } + static int git_blame_config(const char *var, const char *value) + { + if (!strcmp(var, "blame.showroot")) { + show_root = git_config_bool(var, value); + return 0; + } + if (!strcmp(var, "blame.blankboundary")) { + blank_boundary = git_config_bool(var, value); + return 0; + } + return git_default_config(var, value); + } + int cmd_blame(int argc, const char **argv, const char *prefix) { struct rev_info revs; @@@ -1650,6 -1678,7 +1674,7 @@@ char type[10]; const char *bottomtop = NULL; + git_config(git_blame_config); save_commit_buffer = 0; opt = 0; @@@ -1658,6 -1687,10 +1683,10 @@@ const char *arg = argv[i]; if (*arg != '-') break; + else if (!strcmp("-b", arg)) + blank_boundary = 1; + else if (!strcmp("--root", arg)) + show_root = 1; else if (!strcmp("-c", arg)) output_option |= OUTPUT_ANNOTATE_COMPAT; else if (!strcmp("-t", arg))