mirror of
https://github.com/facebook/sapling.git
synced 2025-01-08 14:46:47 +03:00
diff: pass the diff matcher to the copy logic
This passes the existing diff matcher instance down to the copy logic so copy tracing can be more efficient when possible and only trace copies for matching files. This only actually affects forwardcopies (i.e. Given A<-B<-C<-D, it works for 'hg diff -r B -r D foo.txt', but not for 'hg diff -r D -r B foo.txt') since backward copies require walking all histories, and not just the individual file's. This reduces 'hg diff -r A -r B foo.txt' time from 15s to 1s when A and B have 80,000 files different.
This commit is contained in:
parent
610230ad03
commit
cd579fe2e0
@ -2127,7 +2127,7 @@ def diff(repo, node1=None, node2=None, match=None, changes=None, opts=None,
|
||||
|
||||
copy = {}
|
||||
if opts.git or opts.upgrade:
|
||||
copy = copies.pathcopies(ctx1, ctx2)
|
||||
copy = copies.pathcopies(ctx1, ctx2, match=match)
|
||||
|
||||
if relroot is not None:
|
||||
if not relfiltered:
|
||||
|
Loading…
Reference in New Issue
Block a user