- Aug 15, 2018
-
-
Gregory Szorc authored
This file is currently specific to the revlog store. Other stores may not implement it. Mark it as such in test output. Differential Revision: https://phab.mercurial-scm.org/D4395
-
Gregory Szorc authored
fulltextcache is part of the documented interface and is aliased to _fulltextcache. Differential Revision: https://phab.mercurial-scm.org/D4394
-
Gregory Szorc authored
Because it may not be a revlog. Differential Revision: https://phab.mercurial-scm.org/D4393
-
Gregory Szorc authored
We should not be accessing private attributes on the manifestlog, since its behavior is governed by an interface. Differential Revision: https://phab.mercurial-scm.org/D4392
-
- Aug 27, 2018
-
-
Gregory Szorc authored
This will use the modern API if available or fall back to the legacy direct revlog access case. Without this, the perf command won't work on all code bases. Differential Revision: https://phab.mercurial-scm.org/D4391
-
- Aug 15, 2018
-
-
Gregory Szorc authored
lookup() isn't part of the storage API. And this code shouldn't be accessing manifestlog._revlog directly for the modern code base. So let's port it to the modern API. Note that the previous code was busted for cases where we needed to call lookup() because lookup() isn't exposed by manifestrevlog any more. This change is strictly BC breaking because we no longer support resolving partial nodes. But it is a perf* command and I don't think we should flag the change as such. Differential Revision: https://phab.mercurial-scm.org/D4390
-
- Aug 27, 2018
-
-
Gregory Szorc authored
Storage may not be backed by revlogs. So it is wrong to refer to storage as "revlog" or use abbreviations like "rl." This commit replaces revlog terminology in manifest context classes and starts referring to things as "store" or "storage." Differential Revision: https://phab.mercurial-scm.org/D4389
-
Gregory Szorc authored
The revlog module re-exports some node.* symbols courtesy of importing them. Let's access the node.* symbols via our local import. Differential Revision: https://phab.mercurial-scm.org/D4388
-
- Aug 15, 2018
-
-
Gregory Szorc authored
changegroup generation accesses this attribute. We should make it public and expose it on the interface. Differential Revision: https://phab.mercurial-scm.org/D4387
-
- Aug 27, 2018
-
-
Gregory Szorc authored
Previously, manifestrevlog inherited revlog.revlog and therefore exposed all its APIs. This inevitably resulted in consumers calling low-level revlog APIs. As part of abstracting storage, we want to formalize the interface for manifest storage. The revlog API is much too large to define as the interface. Like we did for filelog, this commit divorces the manifest class from revlog so that we can standardize on a smaller API surface. The way I went about this commit was I broke the inheritance, ran tests, and added proxies until all tests passed. Like filelog, there are a handful of attributes that don't belong on the interface. And like filelog, we'll tease these out in the future. As part of this, we formalize an interface for manifest storage and add checks that manifestrevlog conforms to the interface. Adding proxies will introduce some overhead due to extra attribute lookups and function calls. On the mozilla-unified repository: $ hg verify before: real 627.220 secs (user 525.870+0.000 sys 18.800+0.000) after: real 628.930 secs (user 532.050+0.000 sys 18.320+0.000) $ hg serve (for a clone) before: user 223.580+0.000 sys 14.270+0.000 after: user 227.720+0.000 sys 13.920+0.000 $ hg clone before: user 506.390+0.000 sys 29.720+0.000 after: user 513.080+0.000 sys 28.280+0.000 There appears to be some overhead here. But it appears to be 1-2%. I think that is an appropriate price to pay for storage abstraction, which will eventually let us have much nicer things. If the overhead is noticed in other operations (whose CPU time isn't likely dwarfed by fulltext resolution) or if we want to cut down on the overhead, we could dynamically build up a type whose methods are effectively aliased to a revlog instance's. I'm inclined to punt on that problem for now. We may have to do it for the changelog. At which point it could be implemented in a generic way and ported to filelog and manifestrevlog easily enough I would think. .. api:: manifest.manifestrevlog no longer inherits from revlog The manifestrevlog class now wraps a revlog instance instead of inheriting from revlog. Various attributes and methods on instances are no longer available. Differential Revision: https://phab.mercurial-scm.org/D4386
-
- Aug 26, 2018
-
-
sliquister authored
Before this, running hg in emacs' M-x shell started `less`, which would complain about the terminal not being fully functional. Differential Revision: https://phab.mercurial-scm.org/D4376
-
- Aug 22, 2018
-
-
Yuya Nishihara authored
Before, self.auditor and self.nofsauditor held self through self._checknested, and the following code couldn't free a repo by ref-counting. def main(): repo = localrepo.localrepository(uimod.ui(), '../testrepos/hello') main() With this change, the cache of the nofsauditor is limited to a single match session. I think that's okay as the nofsauditor doesn't do any filesystem access. Alternatively, maybe we can remove the callback from nofsauditor since it isn't used unless realfs=True, but I have no idea whether it is a bug or not.
-
- Aug 05, 2018
-
-
Yuya Nishihara authored
It was added at ee6988aea74e "minirst: add decorateblocks search helper", but it's been unused since then.
-
Yuya Nishihara authored
It's a source of bugs to change the type of the return value conditionally.
-
Yuya Nishihara authored
-
Yuya Nishihara authored
I'm going to make minirst.format() always returns a formatted text, not text | (text, pruned).
-
Yuya Nishihara authored
-
Yuya Nishihara authored
-
Yuya Nishihara authored
I'll move some bits from minirst.format() to caller to make the function interface simpler.
-
- Aug 25, 2018
-
-
Yuya Nishihara authored
-
Yuya Nishihara authored
We do that in several places. I'm not pretty sure if "literal:." should be expanded or not, so it's disabled for now.
-
Yuya Nishihara authored
Backed out changeset 45e05d39d9ce
-
Yuya Nishihara authored
It's silly to keep updating xrange(len(changelog), len(changelog) + 1) for each added revision. Instead, let's simply remember the first revision to be added. The test output slightly changed as the branch cache is also warmed up by stream clone, which seems more consistent. .. api:: ``tr.changes['revs']`` is replaced by ``tr.changes['origrepolen']`` which is the first revision number to be added.
-
Yuya Nishihara authored
If it were None, "rev in addedrevs" would crash. So tr.changes["revs"] should be a mandatory parameter here.
-
- May 29, 2018
-
-
Boris Feld authored
We should not use the internal phase for repository without the requirement. Otherwise, older clients could have a look at the repository and see the internal changesets. For now, we introduce a low-level Programming error, more UI friendly error will be introduced later.
-
- May 24, 2018
-
-
Boris Feld authored
For internal changeset to be properly hidden, the client version needs to support it. So we introduce a new repository requirement that will make sure clients touching a repository that uses internal phase supports the feature.
-
- Aug 24, 2018
-
-
Boris Feld authored
The phase is meant to be used for internal commit that are a byproduct of command operation (eg:shelve). This changeset focus on getting the most important feature in, more advanced API is to be introduced in later changesets. The phase approach to handle internal has multiple advantages: * simple to implement, reuse optimized code, * fits well with existing phases. We don't want internal changeset to be exchanged or served. * easy to extend to for lifecycle handling. More thinking about internal changeset at https://www.mercurial-scm.org/wiki/InternalsPlan We add this new phases with a high number to leave some room to possible other phases. We also try out playing with the idea of "flag" for phases, each flag would convey a distinct meaning. We can drop the flag idea in the future (keeping the existing numbers). The flag property should still move in a monotonic direction (enabled -> disabled) or be immutable like the "internal" flag. To simplify the addition of this new phase, we introduce many placeholder phases. They are not meant to be used for now. Keeping `allphases` as a list ensure existing algorithm works fine. The full performance impact of adding that many hollow phases is unclear so far. The impact on phase computation is visible but not worrisome. Runnin `hg perfphase` in my mercurial development repository. Before: ! wall 0.001807 comb 0.000000 user 0.000000 sys 0.000000 (median of 1597) after: ! wall 0.001906 comb 0.000000 user 0.000000 sys 0.000000 (median of 1521)
-
- Aug 22, 2018
-
-
Gregory Szorc authored
Otherwise they get serialized as e.g. <generator object X at 0x7f543d3d68c0> Differential Revision: https://phab.mercurial-scm.org/D4396
-
- Aug 27, 2018
-
-
Valentin Gatien-Baron authored
Differential Revision: https://phab.mercurial-scm.org/D4405
-
Valentin Gatien-Baron authored
Before this change, it doesn't add these extra fields when loaded alongside another extension that does a bunch of things, including wrapping commit. I did not investigate exactly why, but - the documentation of extensions.wrapfunction says to use subclassing to play nicely with other extensions - using subclassing does make commitextras work when loaded alongside my other extension Differential Revision: https://phab.mercurial-scm.org/D4404
-
- Aug 25, 2018
-
-
Boris Feld authored
(Pointed by Yuya Nishihara)
-
- Aug 27, 2018
-
-
Anton Shestakov authored
Plus slight corrections.
-
- Aug 24, 2018
-
-
Martin von Zweigbergk authored
Since the index has a reference to a nodetree and the nodetree has a reference back to the index, there is a reference cycle, so the index (and its nodetree) can never be freed. This patch fixes that by making "nodetree" a plan C struct that the index can embed, and also introduces a new "nodetreeObject" that is a Python type wrapping the nodetree struct. Thanks to Yuya for noticing this and for suggesting the solution. All tests passed on the first attempt once it compiled (I guess C is like Haskell in this regard?). Differential Revision: https://phab.mercurial-scm.org/D4372
-
- Aug 27, 2018
-
-
Pulkit Goyal authored
This silences test-check-execute.t. Differential Revision: https://phab.mercurial-scm.org/D4403
-
Pulkit Goyal authored
Looks like durin42 misindented this. This makes test-run-tests.py passes but I cannot reason why. Differential Revision: https://phab.mercurial-scm.org/D4402
-
Pulkit Goyal authored
If HGCATAPULTSERVERPIPE is not set, we set it to /dev/null, so we need to make sure the value is not /dev/null before appending logs. This fixes some of test-run-tests.t failures. Differential Revision: https://phab.mercurial-scm.org/D4401
-
- Aug 26, 2018
-
-
Sushil Khanchi authored
Differential Revision: https://phab.mercurial-scm.org/D4381
-
- Aug 23, 2018
-
-
Kyle Lippincott authored
Internally we have a custom template that's inspired by ones that we have seen in the community. Normally, this looks something like: o 0834ec17 spectral tip | crecord: support x to toggle single, X to toggle a range o ee932990 spectral @ | filemerge: allow specifying $hgeditor as merge-tools.X.executable @ 66f046116105 matt_harbison | cext: fix truncation warnings in revlog on Windows o 42cc76d0f836 matt_harbison | cext: fix revlog compiler error on Windows ~ o bd63ada7e1f8 stable boris | phases: drop dead code in `newheads` ~ With graphshorten on, and the descriptions of the public nodes hidden, it looks like this, note that the commits right before the ~ are still "full height": o 0834ec17 spectral tip | crecord: support x to toggle single, X to toggle a range o ee932990 spectral @ | filemerge: allow specifying $hgeditor as merge-tools.X.executable @ 66f046116105 matt_harbison o 42cc76d0f836 matt_harbison | ~ o bd63ada7e1f8 stable boris | ~ This patch makes them look like this, removing the | but keeping the ~: o 0834ec17 spectral tip | crecord: support x to toggle single, X to toggle a range o ee932990 spectral @ | filemerge: allow specifying $hgeditor as merge-tools.X.executable @ 66f046116105 matt_harbison o 42cc76d0f836 matt_harbison ~ o bd63ada7e1f8 stable boris ~ This originally removed the ~s entirely, but this was determined to be too much information loss and potentially confusing. This would have looked like the following (note that the last commit is on a different branch than all of the ones above it, and they are *not* linearly related): o 0834ec17 spectral tip | crecord: support x to toggle single, X to toggle a range o ee932990 spectral @ | filemerge: allow specifying $hgeditor as merge-tools.X.executable @ 66f046116105 matt_harbison o 42cc76d0f836 matt_harbison o bd63ada7e1f8 stable boris Differential Revision: https://phab.mercurial-scm.org/D4363
-
- Aug 26, 2018
-
-
Pulkit Goyal authored
Mistakenly, the local-changed-other-deleted-message was put in other-change-local-deleted and vice versa. This followups on D4336. Thanks to Yuya who spotted this. Differential Revision: https://phab.mercurial-scm.org/D4375
-
- Aug 25, 2018
-
-
Pulkit Goyal authored
This is better as the filename is in quotes and user can understand better what the filename is and what is important part in the prompt. Differential Revision: https://phab.mercurial-scm.org/D4373
-