Thu, 06 Nov 2014 14:20:05 -0800 revlog: add config variable for limiting delta-chain length
Mateusz Kwapich <mitrandir@fb.com> [Thu, 06 Nov 2014 14:20:05 -0800] rev 23255
revlog: add config variable for limiting delta-chain length The current heuristic for deciding between storing delta and full texts is based on ratio of (sizeofdeltas)/(sizeoffulltext). In some cases (for example a manifest for ahuge repo) this approach can result in extremely long delta chains (~30,000) which are very slow to read. (In the case of a manifest ~500ms are added to every hg command because of that). This commit introduces "revlog.maxchainlength" configuration variable that will limit delta chain length.
Thu, 06 Nov 2014 14:08:25 -0800 debugrevlog: fix computing chain length in debugrevlog -d
Mateusz Kwapich <mitrandir@fb.com> [Thu, 06 Nov 2014 14:08:25 -0800] rev 23254
debugrevlog: fix computing chain length in debugrevlog -d The chain length was computed correctly only when generaldelta feature was enabled. Now it's fixed. When generaldelta is disabled the base revision in revlog index is not the revision we have delta against - it's always previous revision. Instead of incorrect chainbaseandlen in command.py we are now using two single-responsibility functions in revlog.py: - chainbase(rev) - chainlen(rev) Only chainlen(rev) was missing so it was written to mimic the way the chain of deltas is actually found during file reconstruction.
Wed, 05 Nov 2014 10:13:01 +0000 transaction: factorise append-only file registration
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 05 Nov 2014 10:13:01 +0000] rev 23253
transaction: factorise append-only file registration The addition is done in two different places but differs slightly. We factorise this addition to ensure it is consistent in all places.
Wed, 05 Nov 2014 13:00:48 +0000 transaction: document `tr.add`
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 05 Nov 2014 13:00:48 +0000] rev 23252
transaction: document `tr.add`
Wed, 05 Nov 2014 10:05:38 +0000 transaction: drop backupentries logic from startgroup and endgroup
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 05 Nov 2014 10:05:38 +0000] rev 23251
transaction: drop backupentries logic from startgroup and endgroup The `startgroup` and `endgroup` methods are used in a very specific context to wrap a very specific operation (revlog truncation). It does not make sense to perform any other operations during such a "group" (eg:file backup). There is currently no user of backupfile during a "group" so we drop the group-specific code and restrict authorized operations during "group".
Wed, 05 Nov 2014 10:00:15 +0000 transaction: document startgroup and endgroup
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 05 Nov 2014 10:00:15 +0000] rev 23250
transaction: document startgroup and endgroup These enigmatic methods are only used in repair. We document them to clarify there purpose and user.
Wed, 05 Nov 2014 09:31:57 +0000 transaction: mark backup-related attributes private
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 05 Nov 2014 09:31:57 +0000] rev 23249
transaction: mark backup-related attributes private As the transaction is gaining more functions and attributes, it is important to clarify what is part of the public API.
Wed, 05 Nov 2014 01:30:29 +0000 transaction: document the contents of `tr.backupentries`
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 05 Nov 2014 01:30:29 +0000] rev 23248
transaction: document the contents of `tr.backupentries` Now that all items are known we can document it.
Wed, 05 Nov 2014 01:33:16 +0000 transaction: drop the third item in `tr.backupentries`
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 05 Nov 2014 01:33:16 +0000] rev 23247
transaction: drop the third item in `tr.backupentries` This third item is always None and never used.
Mon, 10 Nov 2014 10:44:42 -0800 rebase: fix rebase with no common ancestors (issue4446) stable 3.2.1
Durham Goode <durham@fb.com> [Mon, 10 Nov 2014 10:44:42 -0800] rev 23246
rebase: fix rebase with no common ancestors (issue4446) The new rebase revset didn't check for the case when there are no common ancestors. Now it does. The new behavior should be the same as the pre-3.2 behavior. Added a test.
Thu, 06 Nov 2014 10:57:13 -0500 test-run-tests: accept more levels of precision and trailing ws (issue4440) stable
Augie Fackler <raf@durin42.com> [Thu, 06 Nov 2014 10:57:13 -0500] rev 23245
test-run-tests: accept more levels of precision and trailing ws (issue4440) simplejson produces slightly different output from the built-in json module, specifically: * It uses 0.000 instead of 0.0000 * It likes to put a trailing space after a comma This change works around both of those variations.
Mon, 10 Nov 2014 17:29:15 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 10 Nov 2014 17:29:15 -0600] rev 23244
merge with stable
Fri, 07 Nov 2014 17:54:59 -0800 changegroup.cg2packer: lookup 'group' via inheritance chain
Siddharth Agarwal <sid0@fb.com> [Fri, 07 Nov 2014 17:54:59 -0800] rev 23243
changegroup.cg2packer: lookup 'group' via inheritance chain This lets extensions insert themselves in the class hierarchy.
Thu, 23 Oct 2014 17:00:38 -0700 context.status: only filter suspect symlinks in the dirstate status
Martin von Zweigbergk <martinvonz@google.com> [Thu, 23 Oct 2014 17:00:38 -0700] rev 23242
context.status: only filter suspect symlinks in the dirstate status We don't care about filtering out symlinks that have already been committed with full content, only those that have been accidentally resolved in the working directory.
Thu, 23 Oct 2014 16:19:56 -0700 context.status: inline _poststatus()
Martin von Zweigbergk <martinvonz@google.com> [Thu, 23 Oct 2014 16:19:56 -0700] rev 23241
context.status: inline _poststatus() By inlining _poststatus() into _buildstatus(), it becomes clearer that it is only called for the workingctx.
Sun, 12 Oct 2014 00:06:40 -0700 context.status: remove now-empty _prestatus()
Martin von Zweigbergk <martinvonz@gmail.com> [Sun, 12 Oct 2014 00:06:40 -0700] rev 23240
context.status: remove now-empty _prestatus()
Sat, 11 Oct 2014 23:30:08 -0700 context.status: call _dirstatestatus() from within _buildstatus()
Martin von Zweigbergk <martinvonz@gmail.com> [Sat, 11 Oct 2014 23:30:08 -0700] rev 23239
context.status: call _dirstatestatus() from within _buildstatus() By making the call to _dirstatestatus() within _buildstatus(), it becomes clearer that it's called only for the workingctx.
Sun, 12 Oct 2014 00:00:13 -0700 context.status: move manifest caching trick to _buildstatus()
Martin von Zweigbergk <martinvonz@gmail.com> [Sun, 12 Oct 2014 00:00:13 -0700] rev 23238
context.status: move manifest caching trick to _buildstatus() In basectx._buildstatus(), we read the manifests for the two revisions being compared. For "caching reasons" unknown to me, it is better to read the earlier manifest first, which basectx._prestatus() takes care of. However, if the 'self' context is a committablectx and the 'other' context is the parent of the working directory (as in the very common case of plain "hg status"), there is no need to read any manifests at all -- all that's needed is the dirstate status. To avoid reading the manifests, _prestatus() is overridden in committablectx and avoids calling its super method, and _buildstatus() calls its super method only if the 'other' context is not the parent of the working directory. It seems easier to follow what's happening if we move the pre-fetching to _buildstatus() just before the place where the manifests are fetched. We just need to add an extra check that the revision is not None to handle the case that was previously handled by subclass overriding. That also makes it safe for committablectx._prestatus() to call its parent, although the latter now becomes empty, so we won't bother.
Sat, 11 Oct 2014 23:18:53 -0700 context.status: remove unused arguments from _matchstatus()
Martin von Zweigbergk <martinvonz@gmail.com> [Sat, 11 Oct 2014 23:18:53 -0700] rev 23237
context.status: remove unused arguments from _matchstatus()
Thu, 23 Oct 2014 13:43:20 -0700 context.status: remove overriding in workingctx
Martin von Zweigbergk <martinvonz@google.com> [Thu, 23 Oct 2014 13:43:20 -0700] rev 23236
context.status: remove overriding in workingctx The workingctx method simply calls the super method. The only effect it has is that it uses a different default argument for the 'other' argument. The only in-tree caller is patch.diff, which always passes an argument to the method, so it should be safe to remove the overriding. Having the default argument depend on the type seems rather dangerous anyway.
Mon, 20 Oct 2014 14:20:43 -0400 synthrepo: when adding files, ensure new path is not a directory
Mike Edgar <adgar@google.com> [Mon, 20 Oct 2014 14:20:43 -0400] rev 23235
synthrepo: when adding files, ensure new path is not a directory
Mon, 20 Oct 2014 13:59:13 -0400 synthrepo: synthesized dates must be positive, fit in 32-bit signed ints
Mike Edgar <adgar@google.com> [Mon, 20 Oct 2014 13:59:13 -0400] rev 23234
synthrepo: synthesized dates must be positive, fit in 32-bit signed ints
Thu, 06 Nov 2014 01:48:29 +0100 discovery: test coverage for issue4438 / 86c35b7ae300 / 73cfaa348650
Mads Kiilerich <madski@unity3d.com> [Thu, 06 Nov 2014 01:48:29 +0100] rev 23233
discovery: test coverage for issue4438 / 86c35b7ae300 / 73cfaa348650 The randomness in the discovery protocol made this problem hard to reproduce. The test mocks random.sample to make sure we hit the problem every time. The set iteration order also made the output unstable ... but with the issue fixed, it is stable.
Wed, 05 Nov 2014 21:33:45 -0500 hgweb: fix a crash when using web.archivesubrepos stable
Matt Harbison <matt_harbison@yahoo.com> [Wed, 05 Nov 2014 21:33:45 -0500] rev 23232
hgweb: fix a crash when using web.archivesubrepos A matcher is required when enabling the subrepo option on archival.archive(), because that calls match.narrowmatcher(), which accesses fields on the object. It's therefore probably a bad idea to default the matcher to None on archive(), but that's a fix for default.
Wed, 05 Nov 2014 20:31:58 -0500 tests: introduce a subrepository to test-archive.t stable
Matt Harbison <matt_harbison@yahoo.com> [Wed, 05 Nov 2014 20:31:58 -0500] rev 23231
tests: introduce a subrepository to test-archive.t This will be used in an upcoming patch to add coverage for web.archivesubrepos.
Tue, 04 Nov 2014 21:45:26 -0800 test-status-rev: add tests for plain dirstate and inter-revision status
Martin von Zweigbergk <martinvonz@google.com> [Tue, 04 Nov 2014 21:45:26 -0800] rev 23230
test-status-rev: add tests for plain dirstate and inter-revision status We have tests for the status across from '.^' to the working copy. It makes sense to have the similar tests for the inter-revision status between '.^' and '.' and for the dirstate status in the same place.
Tue, 04 Nov 2014 21:22:46 -0800 test-status-rev: remove unnecessary initial commit
Martin von Zweigbergk <martinvonz@google.com> [Tue, 04 Nov 2014 21:22:46 -0800] rev 23229
test-status-rev: remove unnecessary initial commit The initial commit was there when we had a group of tests that compared against an empty base, but since those tests no longer exist, we can drop the empty commit.
Tue, 04 Nov 2014 16:10:20 -0800 test-status-rev: use one glob for each expected status
Martin von Zweigbergk <martinvonz@google.com> [Tue, 04 Nov 2014 16:10:20 -0800] rev 23228
test-status-rev: use one glob for each expected status It's getting a little hard to read the ~30 calls to 'hg status' with one per file. Instead, let's use one glob for each expected status. For example, modified files can be listed with 'glob:content1_*_content[23]-tracked'. That also nicely becomes an explanation for why each status is expected.
(0) -10000 -3000 -1000 -300 -100 -50 -28 +28 +50 +100 +300 +1000 +3000 +10000 tip