Wed, 25 Mar 2015 16:21:58 -0700 osutil: mark end of string with null char, not 0
Siddharth Agarwal <sid0@fb.com> [Wed, 25 Mar 2015 16:21:58 -0700] rev 24462
osutil: mark end of string with null char, not 0 Noticed this while working on other stuff in the area.
Wed, 25 Mar 2015 15:55:31 -0700 osutil: use getdirentriesattr on OS X if possible
Siddharth Agarwal <sid0@fb.com> [Wed, 25 Mar 2015 15:55:31 -0700] rev 24461
osutil: use getdirentriesattr on OS X if possible This is a significant win for large repositories on OS X, especially with a cold cache. Unfortunately we need to keep the lstat-based implementation around for two reasons: - Not all filesystems support this call. - There's an edge case in which it's best to fall back to avoid a retry loop. More about this in the comments. The below tests are all performed on a Mac with an SSD running OS X 10.9, on a repository with over 200k files. The results are best of 5 with simulated best-effort conditions. The gains with a hot cache are pretty impressive: 'hg status' goes from 5.18 seconds to 3.79 seconds. However, a repository that large will probably already be using something like hgwatchman [1], which helps much more (for this repo, 'hg status' with hgwatchman is approximately 1 second). Where this really helps is when the cache is cold [2]: hg status goes from 31.0 seconds to 9.66. See http://lists.apple.com/archives/filesystem-dev/2014/Dec/msg00002.html for some more discussion about this function. This is based on a patch by Sean Farley <sean@farley.io>. [1] https://bitbucket.org/facebook/hgwatchman [2] There appears to be no easy way to clear the file cache (aka "vnodes") on OS X short of rebooting. purge(8) purportedly does that but in my testing had little effect. The workaround I came up with was to assume that vnode eviction was LRU, make sure the kern.maxvnodes sysctl is smaller than the size of the repository, then make sure we'd always miss the cache by running 'hg status' in another clone of the repository before running it in the test repository.
Wed, 25 Mar 2015 16:43:29 -0700 osutil._listdir: rename to _listdir_stat
Siddharth Agarwal <sid0@fb.com> [Wed, 25 Mar 2015 16:43:29 -0700] rev 24460
osutil._listdir: rename to _listdir_stat In upcoming patches we'll add another implementation of listdir on OS X. That implementation will have to fall back to this one under some circumstances, though. We'll make _listdir be able to detect those circumstances and use the right function as appropriate.
Mon, 16 Mar 2015 17:11:25 +0900 revset: optimize "x & fullreposet" case
Yuya Nishihara <yuya@tcha.org> [Mon, 16 Mar 2015 17:11:25 +0900] rev 24459
revset: optimize "x & fullreposet" case If self is a smartset and other is a fullreposet, nothing should be necessary. A small win for trivial query in mozilla-central repo: revset #0: (0:100000) 0) wall 0.017211 comb 0.020000 user 0.020000 sys 0.000000 (best of 163) 1) wall 0.001324 comb 0.000000 user 0.000000 sys 0.000000 (best of 2160)
Mon, 16 Mar 2015 18:36:53 +0900 debugrevspec: show nesting structure of smartsets if verbose
Yuya Nishihara <yuya@tcha.org> [Mon, 16 Mar 2015 18:36:53 +0900] rev 24458
debugrevspec: show nesting structure of smartsets if verbose This shows how smartsets are constructed from the query. It will be somewhat useful to track problems such as stack overflow.
Mon, 16 Mar 2015 18:15:06 +0900 revset: add __repr__ to all smartset classes
Yuya Nishihara <yuya@tcha.org> [Mon, 16 Mar 2015 18:15:06 +0900] rev 24457
revset: add __repr__ to all smartset classes This is sometimes useful for debugging.
Wed, 18 Mar 2015 20:40:02 -0700 status: add relative directory help text (issue3835)
Yung-Jin (Joey) Hu <yungjinhu@gmail.com> [Wed, 18 Mar 2015 20:40:02 -0700] rev 24456
status: add relative directory help text (issue3835) Previously, it was difficult to find out how to display the status of files relative to your current working directory. This patch adds that knowledge to the help text.
Wed, 25 Mar 2015 11:55:15 -0700 diff: rename --relative option to --root
Sean Farley <sean@farley.io> [Wed, 25 Mar 2015 11:55:15 -0700] rev 24455
diff: rename --relative option to --root The diff output format is unable to express files outside the directory so it makes sense to name this option --root instead of --relative.
Wed, 25 Mar 2015 15:58:31 -0400 revlog: make converting from inline to non-line work after a strip
Mike Edgar <adgar@google.com> [Wed, 25 Mar 2015 15:58:31 -0400] rev 24454
revlog: make converting from inline to non-line work after a strip The checkinlinesize function, which converts inline revlogs to non-inline, uses the current transaction's "data" field to determine how to update the transaction after the conversion. This change works around the missing data field, which is not in the transaction after a strip.
Tue, 24 Mar 2015 12:52:53 -0700 check-code: in C code, prevent space before closing parenthesis
Laurent Charignon <lcharignon@fb.com> [Tue, 24 Mar 2015 12:52:53 -0700] rev 24453
check-code: in C code, prevent space before closing parenthesis
(0) -10000 -3000 -1000 -300 -100 -10 +10 +100 +300 +1000 +3000 +10000 tip