Both '-M' and '-C' option detect code moving and copying. The difference between the two options is whether they search across file boundary. Thanks-to: Thomas Rast <trast@xxxxxxxxxxxxxxx> Signed-off-by: Bo Yang <struggleyb.nku@xxxxxxxxx> --- Documentation/blame-options.txt | 46 +++++++++++++++++++++++--------------- 1 files changed, 28 insertions(+), 18 deletions(-) diff --git a/Documentation/blame-options.txt b/Documentation/blame-options.txt index 4833cac..d113f2e 100644 --- a/Documentation/blame-options.txt +++ b/Documentation/blame-options.txt @@ -79,34 +79,44 @@ of lines before or after the line given by <start>. of the --date option at linkgit:git-log[1]. -M|<num>|:: - Detect moving lines in the file as well. When a commit - moves a block of lines in a file (e.g. the original file - has A and then B, and the commit changes it to B and - then A), the traditional 'blame' algorithm typically blames - the lines that were moved up (i.e. B) to the parent and - assigns blame to the lines that were moved down (i.e. A) - to the child commit. With this option, both groups of lines - are blamed on the parent. + Detect moving/copying lines in the file as well. Instead of + taking blame for all '+' lines, attempt to find the same + lines 'in the same file' in the parent commit. If such a + match was found, shift the blame to these lines in the + parent. (This expends extra effort on the order of the size + of the file for every change.) ++ +The net effect is that if code is moved or copied within the file, the +lines are attributed to the original instead of the move/copy. + <num> is optional but it is the lower bound on the number of alphanumeric characters that git must detect as moving within a file for it to associate those lines with the parent -commit. +commit. And the default value is 20. -C|<num>|:: - In addition to `-M`, detect lines copied from other - files that were modified in the same commit. This is - useful when you reorganize your program and move code - around across files. When this option is given twice, - the command additionally looks for copies from other - files in the commit that creates the file. When this - option is given three times, the command additionally - looks for copies from other files in any commit. + Like `-M`, detect moving/copying lines between files as well. + Instead of taking blame for all '+' lines, attempt to find the same + lines across file boundary according to the number of given `-C`. + This is useful when you reorganize your program and move/copy + code around across files. When this option is given once, detect + lines moved/copied from other files that were modified in the + same commit. (This expends extra effort on the order of + <number of modified files>*<file size> for every change.) When this + option is given twice, the command additionally looks for moves/copies + from other files in the commit that creates this file. (This expends + extra effort on the order of <number of files in the commit>*<file size> + for every change.) When this option is given three times, the + command additionally looks for moves/copies from other files + in any commit. (This expends extra effort on the order of + <commit number>*<number of files in one commit>*<file size> + for every change.) + <num> is optional but it is the lower bound on the number of alphanumeric characters that git must detect as moving between files for it to associate those lines with the parent -commit. +commit. And the default value is 40. If there are different values +provided by different `-C` option, the last value will take effect finally. -h:: --help:: -- 1.7.0.2.273.gc2413.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html