diff options
author | Junio C Hamano <gitster@pobox.com> | 2013-01-14 08:15:51 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-01-14 08:15:51 -0800 |
commit | 90d0b8a9f015c21b8f4a00a88838cd7bda5750e9 (patch) | |
tree | 3f70d934cb2d677ee1ba9635ff8f309042297dbb /builtin/blame.c | |
parent | 6f3f710127b0d5b651915b705a18a25e389fd40d (diff) | |
parent | 3d1aa56671e7f33740dcd2cf0642d5ce09bd6a95 (diff) | |
download | git-90d0b8a9f015c21b8f4a00a88838cd7bda5750e9.tar.gz |
Merge branch 'jc/blame-no-follow'
Teaches "--no-follow" option to "git blame" to disable its
whole-file rename detection.
* jc/blame-no-follow:
blame: pay attention to --no-follow
diff: accept --no-follow option
Diffstat (limited to 'builtin/blame.c')
-rw-r--r-- | builtin/blame.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/builtin/blame.c b/builtin/blame.c index cfae569905..bc6c899d30 100644 --- a/builtin/blame.c +++ b/builtin/blame.c @@ -42,6 +42,7 @@ static int blank_boundary; static int incremental; static int xdl_opts; static int abbrev = -1; +static int no_whole_file_rename; static enum date_mode blame_date_mode = DATE_ISO8601; static size_t blame_date_width; @@ -1226,7 +1227,7 @@ static void pass_blame(struct scoreboard *sb, struct origin *origin, int opt) * The first pass looks for unrenamed path to optimize for * common cases, then we look for renames in the second pass. */ - for (pass = 0; pass < 2; pass++) { + for (pass = 0; pass < 2 - no_whole_file_rename; pass++) { struct origin *(*find)(struct scoreboard *, struct commit *, struct origin *); find = pass ? find_rename : find_origin; @@ -2403,6 +2404,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix) init_revisions(&revs, NULL); revs.date_mode = blame_date_mode; DIFF_OPT_SET(&revs.diffopt, ALLOW_TEXTCONV); + DIFF_OPT_SET(&revs.diffopt, FOLLOW_RENAMES); save_commit_buffer = 0; dashdash_pos = 0; @@ -2426,6 +2428,8 @@ int cmd_blame(int argc, const char **argv, const char *prefix) parse_revision_opt(&revs, &ctx, options, blame_opt_usage); } parse_done: + no_whole_file_rename = !DIFF_OPT_TST(&revs.diffopt, FOLLOW_RENAMES); + DIFF_OPT_CLR(&revs.diffopt, FOLLOW_RENAMES); argc = parse_options_end(&ctx); if (0 < abbrev) |