Re: [PATCH updated] Add "--dirstat" for some directory statistics
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:44:13
Linus Torvalds [off-list ref] writes:
On Tue, 12 Feb 2008, Junio C Hamano wrote:quoted
You can drop the "line count" idea and instead count the "amount of damage" done to the preimage, just like we do in the rename similarity computation. The attached patch is just an outline. There may need special cases for unmerged paths.Ouch. I like the concept and the result, but an not a huge fan of the the implementation. The problem with this is that it makes the whole damage computation something separate from the earlier phases. So it actually seems to add a lot of cost. Right now there is basically zero added cost to just adding a "--dirstat" to one of my common operations, which is git diff -M --stat --summary (that's what I do on merges). Wouldn't it be nicer to merge it with one of the stages we did earlier by simply saving the data. If not the --stat phase, then the -M phase?
We could add one ulong to diff_filepair struct to record "damage", and populate it inside diffcore_rename(). Obviously: - You would need to diffcore_count_changes() in separate phase if you do not use -M; - Even if you use -M, we do not run diffcore_count_changes() for unrenamed paths during diffcore_rename(), so you would need to do that separately. By the way, if you run "git diff --summary --dirstat -M" (that is, without --stat), we will not have to run diffstat at all. Instead, we only run diffcore_count_changes(), which can be reused for renamed paths if we keep it in diff_filepair struct.