On 11/10/2017 7:37 AM, Peter Krefting wrote:
Jeff King:
Can you get a backtrace? I'd do something like:
Seems that it spends most time in diffcore_count_changes(), that is
where it hits whenever I hit Ctrl+C (various line numbers 199-207 in
diffcore-delta.c; this is on the v2.15.0 tag).
(gdb) bt
#0 diffcore_count_changes (src=src@entry=0x55555db99970,
dst=dst@entry=0x55555d6a4810,
src_count_p=src_count_p@entry=0x55555db99998,
dst_count_p=dst_count_p@entry=0x55555d6a4838,
src_copied=src_copied@entry=0x7fffffffd3e0,
literal_added=literal_added@entry=0x7fffffffd3f0)
at diffcore-delta.c:203
#1 0x00005555556dee1a in estimate_similarity (minimum_score=30000,
dst=0x55555d6a4810, src=0x55555db99970) at diffcore-rename.c:193
#2 diffcore_rename (options=options@entry=0x7fffffffd4f0)
at diffcore-rename.c:560
#3 0x0000555555623d83 in diffcore_std (
options=options@entry=0x7fffffffd4f0) at diff.c:5846
...
Git is spending time detecting renames, which implies you probably
renamed a folder or added and deleted a large number of files. This
rename detection is quadratic (# adds times # deletes).
You can remove this rename detection by running your cherry-pick with
`git -c diff.renameLimit=1 cherry-pick ...`
See https://git-scm.com/docs/diff-config#diff-config-diffrenameLimit
Thanks,
-Stolee