use custom rename score during --follow
If you provide a custom rename score on the command line, like: git log -M50 --follow foo.c it is completely ignored, and there is no way to --follow with a looser rename score. Instead, let's use the same rename score that will be used for generating diffs. This is convenient, and mirrors what we do with the break-score. You can see an example of it being useful in git.git: $ git log --oneline --summary --follow \ Documentation/technical/api-string-list.txt86d4b52
string-list: Add API to remove an item from an unsorted list1d2f80f
string_list: Fix argument order for string_list_appende242148
string-list: add unsorted_string_list_lookup()0dda1d1
Fix two leftovers from path_list->string_listc455c87
Rename path_list to string_list create mode 100644 Documentation/technical/api-string-list.txt $ git log --oneline --summary -M40 --follow \ Documentation/technical/api-string-list.txt86d4b52
string-list: Add API to remove an item from an unsorted list1d2f80f
string_list: Fix argument order for string_list_appende242148
string-list: add unsorted_string_list_lookup()0dda1d1
Fix two leftovers from path_list->string_listc455c87
Rename path_list to string_list rename Documentation/technical/{api-path-list.txt => api-string-list.txt} (47%)328a475
path-list documentation: document all functions and data structures530e741
Start preparing the API documents. create mode 100644 Documentation/technical/api-path-list.txt You could have two separate rename scores, one for following and one for diff. But almost nobody is going to want that, and it would just be unnecessarily confusing. Besides which, we re-use the diff results from try_to_follow_renames for the actual diff output, which means having them as separate scores is actively wrong. E.g., with the current code, you get: $ git log --oneline --diff-filter=R --name-status \ -M90 --follow git.spec.in27dedf0
GIT 0.99.9j aka 1.0rc3 R084 git-core.spec.in git.spec.inf85639c
Rename the RPM from "git" to "git-core" R098 git.spec.in git-core.spec.in The first one should not be considered a rename by the -M score we gave, but we print it anyway, since we blindly re-use the diff information from the follow (which uses the default score). So this could also be considered simply a bug-fix, as with the current code "-M" is completely ignored when using "--follow". Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
7b6c5836cf
commit
dd98d88be7
@ -209,6 +209,7 @@ static void try_to_follow_renames(struct tree_desc *t1, struct tree_desc *t2, co
|
||||
diff_opts.output_format = DIFF_FORMAT_NO_OUTPUT;
|
||||
diff_opts.single_follow = opt->pathspec.raw[0];
|
||||
diff_opts.break_opt = opt->break_opt;
|
||||
diff_opts.rename_score = opt->rename_score;
|
||||
paths[0] = NULL;
|
||||
diff_tree_setup_paths(paths, &diff_opts);
|
||||
if (diff_setup_done(&diff_opts) < 0)
|
||||
|
Loading…
Reference in New Issue
Block a user