Fri, 04 Dec 2015 10:55:46 -0500 changegroup: remove one special case from lookupmflinknode
Augie Fackler <augie@google.com> [Fri, 04 Dec 2015 10:55:46 -0500] rev 27239
changegroup: remove one special case from lookupmflinknode In the fastpathlinkrev case, lookupmflinknode was a very complicated way of saying mfs.__getitem__, so let's just get that case out of our way so it's easier to understand what's going on.
Fri, 04 Dec 2015 10:35:45 -0500 changegroup: drop 'if True' that made the previous change clearer
Augie Fackler <augie@google.com> [Fri, 04 Dec 2015 10:35:45 -0500] rev 27238
changegroup: drop 'if True' that made the previous change clearer
Fri, 04 Dec 2015 10:34:58 -0500 changegroup: avoid iterating the whole manifest
Augie Fackler <augie@google.com> [Fri, 04 Dec 2015 10:34:58 -0500] rev 27237
changegroup: avoid iterating the whole manifest The old code gathered the list of all files that changed anywhere in history and then gathered changed file nodes by walking the entirety of each manifest to be sent in order to gather changed file nodes. That's going to be unfortunate for narrowhg, and it's already inefficient for medium-to-large repositories. Timings for bundle --all on my hg repo, tested with hgperf: Before: ! wall 23.442445 comb 23.440000 user 23.250000 sys 0.190000 (best of 3) After: ! wall 20.272187 comb 20.270000 user 20.190000 sys 0.080000 (best of 3)
Fri, 04 Dec 2015 15:59:46 -0500 posix: work around "posix" systems without os.link available (issue4974)
Augie Fackler <augie@google.com> [Fri, 04 Dec 2015 15:59:46 -0500] rev 27236
posix: work around "posix" systems without os.link available (issue4974) Some platforms (see bug, notably a terminal emulator on Android) ship with os.link removed from Python to try and cater to other tools that expect os.link to exist iff hardlinks are supported on that platform. As a workaround for this madness, include a fallback path for when we're on a "posix" platform but lack os.link.
Thu, 03 Dec 2015 13:14:20 -0800 pathutil: use temporary variables instead of complicated wrapping
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 03 Dec 2015 13:14:20 -0800] rev 27235
pathutil: use temporary variables instead of complicated wrapping The one-lining did not help readability, we get rid of it.
Thu, 03 Dec 2015 13:23:46 -0800 context: use a the nofsauditor when matching file in history (issue4749)
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 03 Dec 2015 13:23:46 -0800] rev 27234
context: use a the nofsauditor when matching file in history (issue4749) Before this change, asking for file from history (eg: 'hg cat -r 42 foo/bar') could fail because of the current content of the working copy (eg: current "foo" being a symlink). As the working copy state have no influence on the content of the history, we can safely skip these checks. The working copy context class have a different 'match' implementation. That implementation still use the repo.auditor will still catch symlink traversal. I've audited all stuff calling "match" and they all go through a ctx in a sensible way. The most unclear case was diff which still seemed okay. You raised my paranoid level today and I double checked through tests. They behave properly. The odds of someone using the wrong (matching with a changectx for operation that will eventually touch the file system) is non-zero because you are never sure of what people will do. But I dunno if we can fight against that. So I would not commit to "never" for "at this level" and "in the future" if someone write especially bad code. However, as a last defense, the vfs itself is running path auditor in all cases outside of .hg/. So I think anything passing the 'matcher' for buggy reason would growl at the vfs layer.
Thu, 03 Dec 2015 13:22:36 -0800 localrepo: add a second auditor without file system check
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 03 Dec 2015 13:22:36 -0800] rev 27233
localrepo: add a second auditor without file system check Auditors keeps a cache of audited paths. Therefore we cannot use the same auditor for working copy and history operation. We create a new one without file system check for this purposes.
(0) -10000 -3000 -1000 -300 -100 -30 -10 -7 +7 +10 +30 +100 +300 +1000 +3000 +10000 tip