On 7/6/17 8:10 AM, Yuya Nishihara wrote:
On Wed, 5 Jul 2017 11:24:59 -0700, Durham Goode wrote:
On 7/5/17 11:13 AM, Pulkit Goyal wrote:
copytrace: This patch speeds up the copy tracing by a file based
heuristics. I am not sure about the way to go with this.
I'd put this in core and behind a config flag. Just like we have
aggressive merge deltas behind a config flag, this is an optimization
that is useful for some, is awkward to do via an extension, and could
end up replacing the current copy tracing logic in the future if we
iterate on it enough.
Sounds good, though I don't know the implementation details. Given how
expensive the current copy tracing is, fast-but-inaccurate one should be
a good option for large repos.
To give a quick overview of the implementation:
Normal copy tracing looks at all files in the destination that don't
exist in the source, and traces their history back to the common
ancestor to see if they match up with a file changed in the source. This
is expensive because it is O(files changed between common ancestor and
destination).
The heuristic limits the search to just files that are either A) in the
same directory as a file in the source (i.e. a rename), or B) have the
same name as a file in the source (i.e. a move to a different
directory). This limits the search space dramatically. Credit to Ryan
and Stas for the idea.
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel