Tue, 10 Mar 2015 21:25:11 -0700 contrib: remove the now useless lock-checker.py extension
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 10 Mar 2015 21:25:11 -0700] rev 24387
contrib: remove the now useless lock-checker.py extension This feature is in core now, and we do not keep backward compability for contrib.
Fri, 16 Jan 2015 02:51:10 -0800 devel: move the lock-checking code into core
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 16 Jan 2015 02:51:10 -0800] rev 24386
devel: move the lock-checking code into core If the developer warnings are enabled, bad locking order will be reported without the need for the contrib extension.
Wed, 18 Mar 2015 20:59:06 -0700 patch.pathtransform: prepend prefix even if strip is 0
Siddharth Agarwal <sid0@fb.com> [Wed, 18 Mar 2015 20:59:06 -0700] rev 24385
patch.pathtransform: prepend prefix even if strip is 0 Silly oversight by me.
Tue, 28 Oct 2014 22:32:18 -0700 walkchangerevs: simplify by using match.always() method
Martin von Zweigbergk <martinvonz@google.com> [Tue, 28 Oct 2014 22:32:18 -0700] rev 24384
walkchangerevs: simplify by using match.always() method Since "slowpath = match.anypats() or (match.files() and opts.get('removed'))", we can simplify the condition "not slowpath and not match.files()" to "not match.anypats() and not match.files()", which is equivalent to "match.always()".
Tue, 28 Oct 2014 22:43:59 -0700 localrepo: simplify by using match.always() method
Martin von Zweigbergk <martinvonz@google.com> [Tue, 28 Oct 2014 22:43:59 -0700] rev 24383
localrepo: simplify by using match.always() method
Tue, 30 Sep 2014 16:40:15 -0700 localrepo: remove check for matcher object that's never None
Martin von Zweigbergk <martinvonz@gmail.com> [Tue, 30 Sep 2014 16:40:15 -0700] rev 24382
localrepo: remove check for matcher object that's never None
Wed, 18 Mar 2015 11:42:09 -0700 context.walk: walk all files when file and '.' given
Martin von Zweigbergk <martinvonz@google.com> [Wed, 18 Mar 2015 11:42:09 -0700] rev 24381
context.walk: walk all files when file and '.' given When both '.' (the working copy root) and an explicit file (or files) are in match.files(), we only walk the explicitly listed files. This is because we remove the '.' from the set too early. Move later and add a test for it. Before this change, the last test would print only "3".
Wed, 18 Mar 2015 09:26:26 -0700 context.walk: call with util.all() a generator, not a list
Martin von Zweigbergk <martinvonz@google.com> [Wed, 18 Mar 2015 09:26:26 -0700] rev 24380
context.walk: call with util.all() a generator, not a list The file set can be large, so avoid going through the entire file set when a file happens not to be in the context.
Tue, 17 Mar 2015 14:52:58 -0700 obsolete: remove last instance of _enabled
Durham Goode <durham@fb.com> [Tue, 17 Mar 2015 14:52:58 -0700] rev 24379
obsolete: remove last instance of _enabled The _enabled bool has been replaced by obsolete.isenabled(...). This removes the last instance of it so I can remove the _enabled flag entirely shortly.
Tue, 24 Feb 2015 18:43:31 -0800 revbranchcache: write cache even during read operations
Durham Goode <durham@fb.com> [Tue, 24 Feb 2015 18:43:31 -0800] rev 24378
revbranchcache: write cache even during read operations Previously we would only actually write the revbranchcache to disk if we were in the middle of a write operation (like commit). Now we will also write it during any read operation. The cache knows how to invalidate itself, so it shouldn't become corrupt if multiple writers try at once (and the write-on-read behavior/risk is the same as all our other caches).
Tue, 10 Feb 2015 20:06:12 -0800 revbranchcache: move cache writing to the transaction finalizer
Durham Goode <durham@fb.com> [Tue, 10 Feb 2015 20:06:12 -0800] rev 24377
revbranchcache: move cache writing to the transaction finalizer Instead of writing the revbranchcache during updatecache (which often happens too early, before the cache is even populated), let's run it as part of the transaction finalizer. It still won't be written for read-only operations, but that's no worse than it is today. A future commit will remove the actual write that happens in updatecache(). This is also good prep for when all caches get moved into the transaction.
Tue, 10 Feb 2015 20:04:47 -0800 revbranchcache: populate cache incrementally
Durham Goode <durham@fb.com> [Tue, 10 Feb 2015 20:04:47 -0800] rev 24376
revbranchcache: populate cache incrementally Previously the cache would populate completely the first time it was accessed. This could take over a minute on larger repos. This patch changes it to update incrementally. Only values that are read will be written, and it will only rewrite as much of the file as strictly necessary. This adds a magic value of '\0\0\0\0' to represent an empty cache entry. The probability of this matching an actual commit hash prefix is tiny, so it's ok if that's always considered a cache miss. This is also BC safe since any existing entries with '\0\0\0\0' will just be considered misses. Perf numbers: Mozilla-central: hg --time log -r 'branch(mobile)' -T. Cold Cache: 14.7s -> 15.1s (3% worse) Warm Cache: 1.6s -> 2.1s (30% worse) Mozilla-cental: hg perfbranchmap 2s -> 2.4s (20% worse) hg: hg log -r 'branch(stable) & branch(default)' Cold Cache: 3.1s -> 1.9s (40% better - because the old code missed the cache on both branch() revset iterations, so it did twice the work) Warm Cache: 0.2 -> 0.26 (30% worse) internal huge repo: hg --time log -r 'tip & branch(default)' Cold Cache: 65.4s -> 0.2s (327x better) While this change introduces minor regressions when iterating over every commit in a branch, it massively improves the cold cache time for operations which touch a single commit. I feel the better O() is worth it in this case.
Tue, 10 Feb 2015 20:01:08 -0800 revbranchcache: move entry writing to a separate function
Durham Goode <durham@fb.com> [Tue, 10 Feb 2015 20:01:08 -0800] rev 24375
revbranchcache: move entry writing to a separate function This moves the actual writing of entries to the cache to a separate function. This will allow us to use it in multiple places. Ex: in one place we will write dummy entries, and in another place we will write real data.
Tue, 10 Feb 2015 19:57:51 -0800 revbranchcache: store repo on the object
Durham Goode <durham@fb.com> [Tue, 10 Feb 2015 19:57:51 -0800] rev 24374
revbranchcache: store repo on the object Previously we would instantiate the revbranchcache with a repo object, use it briefly, then require it be passed in every time we wanted to fetch any information. This seems unnecessary since it's obviously specific to that repo (since it was constructed with it). This patch stores the repo on the revbranchcache object, and removes the repo parameter from the various functions on that class. This has the other nice benefit of removing the double-revbranchcache-read that existed before (it was read once for the branch revset, and once for the repo.revbranchcache).
Tue, 10 Feb 2015 19:53:48 -0800 revbranchcache: move out of branchmap onto localrepo
Durham Goode <durham@fb.com> [Tue, 10 Feb 2015 19:53:48 -0800] rev 24373
revbranchcache: move out of branchmap onto localrepo Previously the revbranchcache was a field inside the branchmap. This is bad for a couple reasons: 1) There can be multiple branchmaps per repo (one for each filter level). There can only be one revbranchcache per repo. In fact, a revbranchcache could only exist on a branchmap that was for the unfiltered view, so you could have branchmaps exist for which you couldn't have a revbranchcache. It was funky. 2) The write lifecycle for the revbranchcache is going to be different from the branchmap (branchmap is greedily written early on, revbranchcache should be lazily computed and written). This patch moves the revbranchcache to live as a field on the localrepo (alongside self._branchmap). This will allow us to handle it's lifecycle differently, which will let us move it to be lazily computed in future patches.
Tue, 17 Mar 2015 14:29:56 -0700 revbranchcache: add test for when the cache is not writable
Durham Goode <durham@fb.com> [Tue, 17 Mar 2015 14:29:56 -0700] rev 24372
revbranchcache: add test for when the cache is not writable The revbranchecache code already handled the case when the cache file wasn't writable, but let's add a test as well so future changes don't regress this.
Tue, 17 Mar 2015 13:06:15 -0700 patch.trydiff: add a docstring
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Mar 2015 13:06:15 -0700] rev 24371
patch.trydiff: add a docstring It took me a bit to figure out what this function actually does.
Tue, 17 Mar 2015 15:33:34 -0700 keyword: monkeypatch patch.diff more generically
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Mar 2015 15:33:34 -0700] rev 24370
keyword: monkeypatch patch.diff more generically This function doesn't need access to any of the args or kwargs, so make the monkeypatching more robust. (In upcoming patches we'll introduce another argument to patch.diff, and this function would break if it weren't for this patch.)
Tue, 17 Mar 2015 15:52:28 -0700 keyword: rename kw_diff to kwdiff in keeping with Mercurial style rules
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Mar 2015 15:52:28 -0700] rev 24369
keyword: rename kw_diff to kwdiff in keeping with Mercurial style rules In an upcoming patch we'll change this function's signature. If the name is kept the same, test-check-commit-hg.t complains.
Tue, 17 Mar 2015 20:36:33 +0900 fetch: use an abort hint where appropriate
Yuya Nishihara <yuya@tcha.org> [Tue, 17 Mar 2015 20:36:33 +0900] rev 24368
fetch: use an abort hint where appropriate
Tue, 17 Mar 2015 20:41:52 +0900 eol: replace "working copy" with "working directory" in extension help
Yuya Nishihara <yuya@tcha.org> [Tue, 17 Mar 2015 20:41:52 +0900] rev 24367
eol: replace "working copy" with "working directory" in extension help
Tue, 17 Mar 2015 20:50:19 +0900 revset: replace "working copy" with "working directory" in function help
Yuya Nishihara <yuya@tcha.org> [Tue, 17 Mar 2015 20:50:19 +0900] rev 24366
revset: replace "working copy" with "working directory" in function help
Tue, 17 Mar 2015 21:53:17 +0900 commands: say "working directory" in full spelling
Yuya Nishihara <yuya@tcha.org> [Tue, 17 Mar 2015 21:53:17 +0900] rev 24365
commands: say "working directory" in full spelling
Tue, 17 Mar 2015 22:47:08 +0900 commands: replace "working copy" with "working directory" in help/messages
Yuya Nishihara <yuya@tcha.org> [Tue, 17 Mar 2015 22:47:08 +0900] rev 24364
commands: replace "working copy" with "working directory" in help/messages "working directory" is the standard term, we should use it consistently. But I didn't touch the hint, "run 'hg update' to get a working copy", because "get a working directory" sounds a bit odd.
Tue, 17 Mar 2015 22:21:09 -0400 test-commit-interactive-curses: #require 'tic'
Matt Harbison <matt_harbison@yahoo.com> [Tue, 17 Mar 2015 22:21:09 -0400] rev 24363
test-commit-interactive-curses: #require 'tic' When run on Windows, this test aborts: @@ -20,7 +20,8 @@ > X > EOF $ hg commit -i -m "a" -d "0 0" - no changes to record + abort: No module named fcntl! + [255] $ hg tip changeset: -1:000000000000 tag: tip Maybe there's another way to get the screen size on Windows (it dies in crecord.gethw()), but for now, quiet the test noise by skipping it if terminal info compiler is unavailable.
Tue, 17 Mar 2015 21:48:34 -0400 check-code: enforce the usage of 'seq.py' instead of 'seq'
Matt Harbison <matt_harbison@yahoo.com> [Tue, 17 Mar 2015 21:48:34 -0400] rev 24362
check-code: enforce the usage of 'seq.py' instead of 'seq'
Tue, 17 Mar 2015 21:47:47 -0400 tests: replace uses of 'seq' with portable 'seq.py'
Matt Harbison <matt_harbison@yahoo.com> [Tue, 17 Mar 2015 21:47:47 -0400] rev 24361
tests: replace uses of 'seq' with portable 'seq.py'
Tue, 17 Mar 2015 20:59:23 -0400 tests: introduce 'seq.py' as a portable replacement for 'seq'
Matt Harbison <matt_harbison@yahoo.com> [Tue, 17 Mar 2015 20:59:23 -0400] rev 24360
tests: introduce 'seq.py' as a portable replacement for 'seq' OS X 10.6.8 doesn't have it, while 10.10 does. I'm not sure when it was added. It may be missing from other platforms as well. This currently doesn't handle the string manipulation options (-f, -s and -w in MinGW anyway), since there is currently no need for it. Since xrange defaults to starting at 0 instead of 1, and treats the end as exclusive instead of inclusive, the args need to be extracted instead of doing: xrange(*[int(a) for a in sys.argv[1:]]) Therefore, the step might as well be added, even though there is no current use.
Mon, 16 Mar 2015 16:33:59 -0700 revert: add flag to make revert interactive
Laurent Charignon <lcharignon@fb.com> [Mon, 16 Mar 2015 16:33:59 -0700] rev 24359
revert: add flag to make revert interactive
Mon, 16 Mar 2015 15:37:00 -0700 record: move ui.write wrapping where it should be
Laurent Charignon <lcharignon@fb.com> [Mon, 16 Mar 2015 15:37:00 -0700] rev 24358
record: move ui.write wrapping where it should be We have to do that for the coloring to work in interactive revert
(0) -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip