sapling/hgext
Mads Kiilerich c8659cbb76 convert: optimize convert of files that are unmodified from p2 in merges
Conversion of a merge starts with p1 and re-adds the files that were changed in
the merge or came unmodified from p2. Files that are unmodified from p1 will
thus not be touched and take no time. Files that are unmodified from p2 would be
retrieved and rehashed. They would end up getting the same hash as in p2 and end
up reusing the filelog entry and look like the p1 case ... but it was slow.

Instead, make getchanges also return 'files that are unmodified from p2' so the
sink can reuse the existing p2 entry instead of calling getfile.

Reuse of filelog entries can make a big difference when files are big and with
long revlong chains so they take time to retrieve and hash, or when using an
expensive custom getfile function (think
http://mercurial.selenic.com/wiki/ConvertExtension#Customization with a code
reformatter).

This in combination with changes to reuse filectx entries in
localrepo._filecommit make 'unchanged from p2' almost as fast as 'unchanged
from p1'.

This is so far only implemented for the combination of hg source and hg sink.

This is a refactoring/optimization. It is covered by existing tests and show no
changes - which is a good thing.
2015-03-19 17:40:19 +01:00
..
convert convert: optimize convert of files that are unmodified from p2 in merges 2015-03-19 17:40:19 +01:00
highlight highlight: ignore Unicode's extra linebreaks (issue4291) 2014-12-17 13:25:24 -06:00
largefiles largefiles: replace 'ctx._repo' with 'ctx.repo()' 2015-03-12 23:08:16 -04:00
zeroconf zeroconf: use port from server instead of picking port from config (issue3746) 2012-12-30 19:19:52 +01:00
__init__.py Re-add hgext/__init__.py 2005-09-29 12:49:01 -07:00
acl.py check-code: check for spaces around = for named parameters 2013-10-03 14:50:47 +02:00
blackbox.py localrepo: remove all external users of localrepo.opener 2015-01-15 23:17:12 +01:00
bugzilla.py bugzilla: correct config documentation error 2014-07-03 10:56:03 +01:00
censor.py censor: add censor command to hgext with basic client-side tests 2015-03-15 21:52:17 -04:00
children.py children: define inferrepo in command decorator 2014-05-04 22:25:28 -07:00
churn.py churn: deprecate -t option in favour of -T 2015-02-24 11:37:07 -05:00
color.py color: consolidate cut-and-paste code 2015-03-11 09:34:22 -04:00
eol.py eol: replace "working copy" with "working directory" in extension help 2015-03-17 20:41:52 +09:00
extdiff.py extdiff: expand tildes and variables in paths to user-supplied diff programs 2015-02-27 17:35:07 -05:00
factotum.py factotum: convert Plan 9 quoted string to Python string 2014-11-25 02:31:52 -06:00
fetch.py commands: say "working directory" in full spelling 2015-03-17 21:53:17 +09:00
gpg.py localrepo: remove all external users of localrepo.opener 2015-01-15 23:17:12 +01:00
graphlog.py graphlog: do not bypass commands.log so that -fr works 2015-03-04 21:47:07 +09:00
hgcia.py style: kill ersatz if-else ternary operators 2015-03-13 17:00:06 -04:00
hgk.py hgk: don't honor whitespace and format-changing diffopts 2014-11-18 21:38:19 -08:00
histedit.py histedit: remove extra histedit constructor call 2015-03-11 07:19:55 -07:00
keyword.py keyword: rename kw_diff to kwdiff in keeping with Mercurial style rules 2015-03-17 15:52:28 -07:00
mq.py commands: say "working directory" in full spelling 2015-03-17 21:53:17 +09:00
notify.py style: kill ersatz if-else ternary operators 2015-03-13 17:00:06 -04:00
pager.py pager: ensure wrapped dispatch._runcommand runs before color's 2015-02-06 12:09:09 -08:00
patchbomb.py style: kill ersatz if-else ternary operators 2015-03-13 17:00:06 -04:00
progress.py progress: add a lock to prepare for introducing a thread 2015-01-17 13:13:16 -08:00
purge.py purge: access status fields by name rather than index 2014-10-03 10:38:43 -07:00
rebase.py rebase: ensure rebase revision remains visible (issue4504) 2015-01-27 12:33:56 +00:00
record.py record: change interface of dorecord to accept new filters 2015-03-11 16:39:38 -07:00
relink.py relink: declare command using decorator 2014-05-04 21:52:25 -07:00
schemes.py scheme: don't crash on invalid URLs 2013-04-11 14:41:22 +02:00
share.py commands: replace "working copy" with "working directory" in help/messages 2015-03-17 22:47:08 +09:00
shelve.py changegroup.writebundle: provide ui 2015-01-15 14:39:41 -08:00
strip.py commands: replace "working copy" with "working directory" in help/messages 2015-03-17 22:47:08 +09:00
transplant.py commands: say "working directory" in full spelling 2015-03-17 21:53:17 +09:00
win32mbcs.py win32mbcs: wrap util.split() 2013-07-04 23:05:59 +09:00
win32text.py extensions: mark win32text deprecated 2014-03-01 19:51:22 -06:00