Thu, 23 Mar 2017 20:50:33 +0900 similar: get rid of quadratic addedfiles.remove()
Yuya Nishihara <yuya@tcha.org> [Thu, 23 Mar 2017 20:50:33 +0900] rev 31580
similar: get rid of quadratic addedfiles.remove() Instead, build a set of files to be removed and recreate addedfiles only if necessary. Benchmark with 50k added/removed files, on tmpfs: $ hg addremove --dry-run --time -q original: real 16.550 secs (user 15.000+0.000 sys 1.540+0.000) previous: real 16.730 secs (user 15.280+0.000 sys 1.440+0.000) this patch: real 16.070 secs (user 14.470+0.000 sys 1.580+0.000)
Sun, 15 Mar 2015 18:58:56 +0900 similar: sort files not by object id but by path for stable result
Yuya Nishihara <yuya@tcha.org> [Sun, 15 Mar 2015 18:58:56 +0900] rev 31579
similar: sort files not by object id but by path for stable result Perhaps the original implementation would want to sort added/removed files alphabetically, but actually it did sort fctx objects by memory location. This patch removes the use of set()s in order to preserve the order of added/removed files. addedfiles.remove() becomes quadratic, but its cost appears not dominant. Anyway, the quadratic behavior will be eliminated by the next patch. Benchmark with 50k added/removed files, on tmpfs: $ mkdir src $ for n in `seq 0 49`; do > mkdir `printf src/%02d $n` > done $ for n in `seq 0 49999`; do > f=`printf src/%02d/%05d $(($n/1000)) $n` > dd if=/dev/urandom of=$f bs=8k count=1 status=none > done $ hg ci -qAm 'add 50k files of random content' $ mv src dest $ hg addremove --dry-run --time -q original: real 16.550 secs (user 15.000+0.000 sys 1.540+0.000) this patch: real 16.730 secs (user 15.280+0.000 sys 1.440+0.000)
Sun, 12 Mar 2017 01:34:17 -0800 debugfsinfo: print fstype information
Jun Wu <quark@fb.com> [Sun, 12 Mar 2017 01:34:17 -0800] rev 31578
debugfsinfo: print fstype information Since we have osutil.getfstype, it'll be handy if "debugfsinfo" prints it.
Sun, 12 Mar 2017 01:03:23 -0800 util: enable hardlink for copyfile
Jun Wu <quark@fb.com> [Sun, 12 Mar 2017 01:03:23 -0800] rev 31577
util: enable hardlink for copyfile This patch removes the global variable "allowhardlinks" that disables hardlink in all cases, so hardlink gets enabled if the filesystem type is whitelisted. Third party extensions wanting to enable hardlink support unconditionally can replace "_hardlinkfswhitelist.__contains__".
Sun, 12 Mar 2017 00:26:20 -0800 hghave: add a check about whitelisted filesystem that supports hardlink
Jun Wu <quark@fb.com> [Sun, 12 Mar 2017 00:26:20 -0800] rev 31576
hghave: add a check about whitelisted filesystem that supports hardlink This is needed for the test added by the next patch.
Sun, 12 Mar 2017 00:23:07 -0800 util: disable hardlink for copyfile if fstype is outside a whitelist
Jun Wu <quark@fb.com> [Sun, 12 Mar 2017 00:23:07 -0800] rev 31575
util: disable hardlink for copyfile if fstype is outside a whitelist Since osutil.getfstype is available, use it to detect filesystem types. The whitelist currently includes common local filesystems on Linux where they should have good hardlink support. We may add new filesystems for other platforms later.
Tue, 21 Mar 2017 17:39:49 -0400 revlog: use pycompat.maplist to eagerly evaluate map on Python 3
Augie Fackler <augie@google.com> [Tue, 21 Mar 2017 17:39:49 -0400] rev 31574
revlog: use pycompat.maplist to eagerly evaluate map on Python 3 According to Pulkit, this should fix `hg status --all` on Python 3.
Tue, 21 Mar 2017 22:47:49 -0700 py3: stop exporting urlparse from pycompat and util (API)
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 21 Mar 2017 22:47:49 -0700] rev 31573
py3: stop exporting urlparse from pycompat and util (API) There are no consumers of this in tree. Functions formerly available on this object/module can now be accessed via {pycompat,util}.urlreq.
Tue, 21 Mar 2017 22:46:17 -0700 check-code: recommend util.urlreq when importing urlparse
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 21 Mar 2017 22:46:17 -0700] rev 31572
check-code: recommend util.urlreq when importing urlparse
Tue, 21 Mar 2017 22:45:02 -0700 tests: use urlreq in tinyproxy.py
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 21 Mar 2017 22:45:02 -0700] rev 31571
tests: use urlreq in tinyproxy.py This is our last consumer of util.urlparse.
Tue, 21 Mar 2017 22:39:52 -0700 bugzilla: use util.urlreq.urlparse
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 21 Mar 2017 22:39:52 -0700] rev 31570
bugzilla: use util.urlreq.urlparse And stop saving a module variable because it shouldn't be necessary.
Tue, 21 Mar 2017 22:34:17 -0700 pycompat: define urlreq.urlparse and urlreq.unparse aliases
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 21 Mar 2017 22:34:17 -0700] rev 31569
pycompat: define urlreq.urlparse and urlreq.unparse aliases Currently, we export urlparse via util.urlparse then call util.urlparse.urlparse() and util.urlparse.urlunparse() in a few places. This is the only url* module exported from pycompat, making it a one-off. So let's transition to urlreq to match everything else. Yes, we double import "urlparse" now on Python 2. This will be cleaned up in a subsequent patch. Also, the Python 3 functions trade in str/unicode not bytes. So we'll likely need to write a custom implementation that speaks bytes. But moving everyone to an abstracted API is a good first step.
(0) -30000 -10000 -3000 -1000 -300 -100 -12 +12 +100 +300 +1000 +3000 +10000 tip