Boris Feld <boris.feld@octobus.net> [Wed, 06 Dec 2017 23:33:01 +0100] rev 35305
push: restrict common discovery to the pushed set
This changeset make use of the ability of the set discovery to only search
common changeset for a subset of the repository. Restricting that search to the
pushed set avoid potential waste of time finding out the status of many
unrelated related revision.
Repository with many heads were especially badly affected by this. Here is an
example of findcommonhead discovery for pushing 11 outgoing changeset on a
repository with tens of thousand of unrelated heads. (discovery run over a ssh
link to localhost).
Before:
queries: 92
time: 44.1996s
After:
queries: 3
time: 0.6938s
A x63 speedup even with a network link without latency.
Boris Feld <boris.feld@octobus.net> [Wed, 06 Dec 2017 22:44:51 +0100] rev 35304
setdiscover: allow to ignore part of the local graph
Currently, the push discovery first determines the full set of common nodes
before looking into what changesets are outgoing. When pushing a specific
subset, this can lead to pathological situations where we search for the status
of thousand of local heads that are unrelated to the requested pushes.
To fix this, we need to teach the discovery to ignores part of the graph. Most
of the necessary pieces were already in place. This changeset just makes them
available to higher level API and tests them.
Change actually impacting pushes are coming in a later changeset.
Boris Feld <boris.feld@octobus.net> [Thu, 07 Dec 2017 01:53:14 +0100] rev 35303
largefiles: allow to run 'debugupgraderepo' on repo with largefiles
The extensions wrap the necessary function to ensure the 'largefiles'
requirements won't be dropped.
It is now possible to run `hg debugupgraderepo` on a repository with largefiles.
Boris Feld <boris.feld@octobus.net> [Thu, 07 Dec 2017 01:51:54 +0100] rev 35302
upgraderepo: allow extension to register preserved requirements
Some requirement does not directly result from config and needs more advanced
logic to be preserved. The current example is 'largefiles'. We add a hook
point in the upgrade code so that extensions can handle these cases.
The 'largefiles' extension will use it in the next changeset.
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 19:41:42 +0900] rev 35301
revset: make follow() accept empty startrev
This is the same behavior as ancestors(emptyset).
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 19:40:07 +0900] rev 35300
revset: alias follow(startrev=rev) to ancestors(rev)
This seems natural given 'log -frREV' (with no file pattern) is equivalent
to 'log -frREV *'.
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 19:35:36 +0900] rev 35299
revset: make follow() accept keyword arguments
Also renamed the argument from 'pattern' to 'file' conforming to
followlines().
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 19:11:26 +0900] rev 35298
revset: make follow() accept multiple startrevs
The diff might look slightly complicated, but the initial "c = repo['.']" was
effective if rev = None.
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 18:41:51 +0900] rev 35297
dagop: use heap to compute max rev in filectxancestors()
Yuya Nishihara <yuya@tcha.org> [Sun, 22 Oct 2017 18:57:42 +0900] rev 35296
dagop: add smartset interface to filectxancestors()
The original filectx API is kept public since we'll need it to walk ancestor
(rev, match) pairs efficiently. The current implementation scans ancestors
twice for 'hg log -fp FILE'.
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 13:20:47 -0800] rev 35295
overlayworkingctx: add `_checkexist(path)`
This is in preparation to switch this class to inheriting (and being based off
a) `commitctx` instead of a `workingctx`. `filectx` has no `exists` function,
so this is how we'll fall back in that case.
Differential Revision: https://phab.mercurial-scm.org/D1237
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 13:20:47 -0800] rev 35294
overlayworkingctx: fix a bad reference to `self._path`
Differential Revision: https://phab.mercurial-scm.org/D1236
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 13:20:47 -0800] rev 35293
overlayworkingctx: track copy information in the context
We can no longer do so in the dirstate, so add the functions to do so here.
Differential Revision: https://phab.mercurial-scm.org/D1235
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 13:20:47 -0800] rev 35292
rebaseruntime: raise InMemoryMergeConflictsError on merge conflicts
Differential Revision: https://phab.mercurial-scm.org/D1234
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 13:20:47 -0800] rev 35291
rebase: do not bail on uncomitted changes if rebasing in-memory
Differential Revision: https://phab.mercurial-scm.org/D1233