Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 18 Jun 2015 16:14:16 -0700] rev 1379
evolve: avoid creating changectx object in _successors
The repo lookups and object creations have a significant performance overhead.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 18 Jun 2015 16:13:35 -0700] rev 1378
evolve: avoid creating changectx object in _allprecursors
The repo lookups and object creations have a significant performance overhead.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 18 Jun 2015 16:13:15 -0700] rev 1377
evolve: avoid creating changectx object in _precursors
The repo lookups and object creations have a significant performance overhead.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 18 Jun 2015 16:18:29 -0700] rev 1376
evolve: fix the template keyworkd decorator docstring
It was still talking about revsets.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 18 Jun 2015 15:56:56 -0700] rev 1375
evolve: search divergence within all precursors
Before this patches we looking for divergence base in immediate successors only.
This was a bug leading the divergence base to be reported missing more than it
should.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 18 Jun 2015 15:25:51 -0700] rev 1374
evolve: make sure we use an unfiltered repo when looking for divergence data
Let's be double sure
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 18 Jun 2015 15:25:51 -0700] rev 1373
evolve: make sure we use an unfiltered repo when looking for divergence data
Let's be double sure
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 17 Jun 2015 11:31:05 -0700] rev 1372
directaccess: remove import from the no warning list
removal of the list previously failed for some reason.
Laurent Charignon <lcharignon@fb.com> [Wed, 17 Jun 2015 10:30:07 -0700] rev 1371
directaccess: add some commands to the directaccess list
Before this patch we had a limited list of commands in the directaccess list.
This patch adds about 20 commands to that list:
- all the read-only commands in core supporting a rev as an argument
- 'outgoing': since people can use 'outgoing' to know what is going to be
pushed, the output of hg outgoing should be consistent with to the output
of hg push and must therefore disallow directaccess since hg push forbids it.
Laurent Charignon <lcharignon@fb.com> [Tue, 16 Jun 2015 14:49:28 -0700] rev 1370
evolve: move test for evolve --rev ordering in a separate file
evolve --rev reordering is a complicated enough topic to justify a separate
test.
Laurent Charignon <lcharignon@fb.com> [Tue, 16 Jun 2015 14:30:43 -0700] rev 1369
evolve: properly evolve stacked unstable with --rev
Before this patch, _singlesuccessor was not returning a revision number for
the case where the parent of the argument was not obsolete. This resulted in
bug when testing membership with the set of revisions. This patch fixes it and
adds a test.
Laurent Charignon <lcharignon@fb.com> [Tue, 16 Jun 2015 10:19:17 -0700] rev 1368
directaccess: disable directaccess for push and serve
Before this patch, push and serve were subject to directaccess. This patch
makes them throw error when trying to access hidden hashes.
Laurent Charignon <lcharignon@fb.com> [Tue, 16 Jun 2015 10:08:48 -0700] rev 1367
directaccess: change rule from opt-in to opt-out
Before this patch we would opt-in commands for direct access and the default
filter for new repository was 'visible'.
With this patch, the default filter for new repos is
'visible-directaccess-warn'. It means that by default all the commands have
directaccess with warnings.
Laurent Charignon <lcharignon@fb.com> [Tue, 16 Jun 2015 10:07:51 -0700] rev 1366
inhibit: move transaction wrapping outside of repo setup
Before this patch, transaction wrapping code was done in reposetup. It happened
to cause stackoverflows in repos with a lot of subreps.
This patch moves the wrapping to extsetup and avoids this problem.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 15 Jun 2015 17:44:12 -0700] rev 1365
tests: ignores other core output in capability testing
This will avoid breaking the test anytime core changes.
Laurent Charignon <lcharignon@fb.com> [Wed, 20 May 2015 12:46:13 -0700] rev 1364
evolve: make uncommit respect allowunsable
Before this patch, the uncommit command was performing the same way regardless
of the value of experimental.evolution.
With this patch if the configuration does not allow unstability, uncommit won't
create instability.
Laurent Charignon <lcharignon@fb.com> [Sat, 13 Jun 2015 11:14:07 -0700] rev 1363
directaccess: use cached filteredrevs
Before this patch we were calling directly repoview.computehidden(repo) to
compute the revisions visible with direct access, without going through the
caching mechanism for the filtered revisions.
There was two issues with that:
(1) Performance: We were not leverating the cached values of the 'visible' revs
(2) Stability: If there were to be a cache inconsistency with the computation of
'visible' we would crash in the branchmap consistency check partial.validfor.
Consider the scenario of rebase with bookmarks:
- when we delete a bookmark on an obsolete changeset (like what rebase
does when moving the bookmark after rebasing the changesets)
- then this changes the value returned by repoview.computehidden(repo) as
bookmarks are used as dynamic blockers in repoview.computehidden(repo)
- as of now, we don't invalidate the cache in the case of bookmark change
- if we have a cached value from before the bookmark change,
repoview.filterrevs(repo, 'visible') considers the cached value correct and
returns something different than repoview.computehidden(repo)
- in turn, if we use repoview.computehidden(repo) in directaccess, the subset
relationship is broken and the cache consistency assertion (parial.validfor)
fails if branchmap.updatecache is called in this time window
This patch leverages the caching infrastructure in place to speed up the
computation of the filteredrevs for visible-directaccess-nowarn and
visible-directaccess-warn. Incidentally it prevents the bug discussed in (2)
from crashing when running a rebase with a bookmark. Note that there still
needs to be a fix in core for the case discussed in (2).
The test for this side of the fix (not core's fix for (2) is very hard to
implement without introducing a lot of dependencies and does not belong
here. It is much easier to have the test of the fix for the scenario (2) in
core along with the fix.
Laurent Charignon <lcharignon@fb.com> [Sat, 13 Jun 2015 11:14:27 -0700] rev 1362
inhibit: improve performance of transaction wrapping
Before this patch, transaction wrapping was the most expensive part of inhibit
computation wise. This patch changes the revset that we use in the transaction
wrapping to make it ~50x faster to compute:
revset #0: obsolete() - hidden()
0) wall 0.000214 comb 0.000000 user 0.000000 sys 0.000000 (best of 11209)
vs
revset #0: (not hidden()) and obsolete()
0) wall 0.010965 comb 0.010000 user 0.010000 sys 0.000000 (best of 237)
Laurent Charignon <lcharignon@fb.com> [Thu, 04 Jun 2015 16:49:16 -0700] rev 1361
evolve: extract the code computing dependencies in a separate function
The code to compute dependencies between unstable changeset can be reused to
compute the next reveset. This patch extracts it in its own function to make
it reusable.
Laurent Charignon <lcharignon@fb.com> [Thu, 04 Jun 2015 10:01:02 -0700] rev 1360
directaccess: add mechanism to load directaccess after some other extensions
directaccess needs to load after some extensions to avoid interfering with them.
This patch adds a mechanism to specify what extension directaccess needs to load
after.
Laurent Charignon <lcharignon@fb.com> [Tue, 02 Jun 2015 15:24:12 -0700] rev 1359
evolve: add another test for evolve --rev
This patch adds one test for three conditions not covered before:
- evolve --rev on a stack with obsolete commits without successors
- evolve --rev on two sets of stacks in parallel
- evolve --rev on a set of stack partially solvable (because all of the
commits of the stack are not specified with --rev)
Laurent Charignon <lcharignon@fb.com> [Tue, 02 Jun 2015 15:23:50 -0700] rev 1358
evolve: add a more complex test for evolve --rev
The previous tests of evolve --rev would have passed with an ordering of revs
by increasing revision numbers. This patch adds a test that would fail if that
was what we were doing and therefore tests the implementation better.
Laurent Charignon <lcharignon@fb.com> [Thu, 04 Jun 2015 13:35:12 -0700] rev 1357
evolve: add ordering of the revisions for evolve --rev
When running evolve --rev we want to process the revisions in an optimal fashion
to solve the maximum amount of trouble in the minimum number of steps.
This patch adds a step to evolve --rev to order the revision before solving
the troubles. A simple test is added to cover a basic case.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 04 Jun 2015 13:26:58 -0700] rev 1356
test: adapt to change in mercurial core
Bundle2 is one by default and more capability have been added.
Laurent Charignon <lcharignon@fb.com> [Wed, 03 Jun 2015 16:01:28 -0700] rev 1355
evolve: add directaccess to the setup.py
directaccess was missing from the list so that when we were building evolve it
was not contained in the build.
Laurent Charignon <lcharignon@fb.com> [Mon, 01 Jun 2015 12:29:12 -0700] rev 1354
evolve: don't crash on singled out revisions
Before this patch, we were crashing on unsolvable revisions when using
evolve --rev. This patch removes the crash and prints a warning when we
encounter such revision.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 01 Jun 2015 10:58:50 -0700] rev 1353
test: adapt test to less frequent branch warning
The 701df761aa94 changeset in mercurial core made the branch warning issue only
for the first branch created. We adapt the tests to reflect this change.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 01 Jun 2015 10:56:49 -0700] rev 1352
tests: adapt summary output to 6084926366b9
The 'summary' commands recently gained phases related output, 6084926366b9 put
it into a "final" state. We adapt the test to this new style.
Laurent Charignon <lcharignon@fb.com> [Wed, 27 May 2015 10:23:37 -0700] rev 1351
evolve: small refactoring of the uncommit function
We introduce a new variable to simplify the implementation of hg uncommit
--interactive.
Laurent Charignon <lcharignon@fb.com> [Wed, 13 May 2015 09:46:34 -0700] rev 1350
evolve: improve error message
We add a new line and change the wording from 'revsets' to 'revisions'.
Laurent Charignon <lcharignon@fb.com> [Wed, 13 May 2015 09:43:36 -0700] rev 1349
evolve: move return statement at the right level
When no trouble was found with the --rev option, the code of the evolve
function would continue running and would solve unwanted troubles. This patch
makes sure it does not happen.
Laurent Charignon <lcharignon@fb.com> [Wed, 27 May 2015 14:00:01 -0700] rev 1348
evolve: remove extra whitespace
This patch removes a whitespace at the end of a line.
Laurent Charignon <lcharignon@fb.com> [Fri, 22 May 2015 10:38:16 -0700] rev 1347
directaccess: don't crash when evolve is not loaded
Before this patch, when evolve was not loaded direct access was crashing. This
patch catches the error and prevents the crash.
Laurent Charignon <lcharignon@fb.com> [Wed, 20 May 2015 10:58:32 -0700] rev 1346
inhbit: don't crash on commit with no changes
Before this patch inhibit would crash when running hg amend with no changes.
This patch fixes this case and adds a test to prevent regression.
Laurent Charignon <lcharignon@fb.com> [Wed, 20 May 2015 13:32:32 -0700] rev 1345
evolve: add a test for prune --keep -r . with active bookmark
We recently changed the behavior of prune to make sure that the active
bookmark stays active after prune -r .
This patch adds a test for the case of prune --keep -r . that does not
take the same code path.
Laurent Charignon <lcharignon@fb.com> [Wed, 20 May 2015 13:23:20 -0700] rev 1344
Merge with stable
Laurent Charignon <lcharignon@fb.com> [Thu, 14 May 2015 11:32:04 -0700] rev 1343
inhibit: add test to ensure that --hidden is working with inhibit
There was a concern with the transaction hook in inhibit and its potentially
devastating effect when used with --hidden. The transaction hook in inhibit
hides all the visible & obsolete commits when the transaction ends using the
visible() and the obsolete() revset.
--hidden does not change the visible() revset so it is fine. If this changes in
the future and --hidden actually ends up impacting the visible() revset, this
test will catch it and prevent inhibit from putting inhibition markers on
all of the obsolete changesets.
Laurent Charignon <lcharignon@fb.com> [Mon, 18 May 2015 17:24:38 -0700] rev 1342
prune: with active bookmark should stay active
hg prune with an active bookmark was deactivating the bookmark after the prune.
This patch makes sure that if a bookmark was active before a "prune" operation
(except prune -B) then the bookmark stays activate afterwards.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 19 May 2015 00:47:00 -0500] rev 1341
merge with stable
Augie Fackler <raf@durin42.com> [Mon, 18 May 2015 13:58:57 -0400] rev 1340
evolve: migrate off of now-dead util.any
Laurent Charignon <lcharignon@fb.com> [Thu, 14 May 2015 11:23:40 -0700] rev 1339
inhibit: create direct access extension
Since we want to use direct access without necessarily using inhibit, this
patch separates both extensions. Inhibit depends on direct access and we add
a test to check that it complains if that is not the case.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 14 May 2015 15:59:06 -0700] rev 1338
inhibit: handle inhibit marker on stripped revision
If a revision disappear from the repo, we should not crash.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 13 May 2015 17:25:15 -0700] rev 1337
update README
Laurent Charignon <lcharignon@fb.com> [Wed, 13 May 2015 09:03:11 -0700] rev 1336
evolve: don't use python sets on top of revset for evolve --rev
In --rev we were wrapping the revsets in python sets.
This is wrong as the use python sets force the wrapper revision set to be
computed earlier than it has to and have no order guarantee.
Removing this wrapping changes a test because the ordering does not appear to
be the same but the end result is the same.
Laurent Charignon <lcharignon@fb.com> [Wed, 13 May 2015 08:47:27 -0700] rev 1335
evolve: current bookmark wrongly moving during prune (issue4559)
Before this patch: prune -r <otherbookmark> also moved the current bookmark
eventhough it was not related to the pruned changes.
This patch fixes it and adds a test to catch regressions.
Laurent Charignon <lcharignon@fb.com> [Tue, 12 May 2015 13:52:29 -0700] rev 1334
inhibit: direct access with and without warning on a per command basis
We introduce a new filtername visibile-directaccess-nowarn to enable direct
access with no warning on a per command basis.
The motivation behing this change is to display warning when attempting direct
access in destructive commands.
Laurent Charignon <lcharignon@fb.com> [Tue, 12 May 2015 12:26:46 -0700] rev 1333
inhbit: make tests work with evolution.createmarkers config
Before this patch, the test for inhibit was assuming evolve fully running.
For most of the features that inhbit enables, createmarkers is sufficient.
This patch makes the test of inhibit run with the createmarkers config and
only lifts it for operations in the middle of the stack.
Laurent Charignon <lcharignon@fb.com> [Thu, 30 Apr 2015 17:37:11 -0700] rev 1332
inhibit: config to enable only direct access
Inhibit provides several features to hide instability and direct access.
We want to use direct access in evolve without hiding the instability.
This patch adds a config flag to enable only direct access in inhibit, when
this config flag is not set or set to false we enable all the features of
inhibit that don't concern direct access.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 11 May 2015 14:31:17 -0700] rev 1331
merge with stable
Ryan McElroy <rmcelroy@fb.com> [Thu, 07 May 2015 13:20:11 -0700] rev 1330
bookmarks: update to use new bookmarks api via compatibility layer
Tested against 3.4 and latest hg + upcoming bookmarks patches
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 07 May 2015 10:54:37 -0700] rev 1329
simple4server: remove buggy wrapping of pull related function
Not only the wrapping was all buggy, but simple4server is not supposed to affect
client side pull.
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 06 May 2015 11:29:15 -0700] rev 1328
simple4server: update bugtracker link
We moved all evolution related bug to the core Mercurial tracker.
Laurent Charignon <lcharignon@fb.com> [Tue, 05 May 2015 14:09:09 -0700] rev 1327
evolve: rename handlenotrouble to _handlenotrouble and add doc
As suggested by Pierre-Yves on his comments on
f113636997660b807c36cf1d0a06b76d53ada1a4 we make it clear that this function
is private and explain what it does.
Laurent Charignon <lcharignon@fb.com> [Tue, 05 May 2015 18:20:40 -0700] rev 1326
evolve: improve the help message of --rev
User's are not exposed to the notion of revset, this patch makes the help
message more intelligible.
Laurent Charignon <lcharignon@fb.com> [Tue, 05 May 2015 14:25:59 -0700] rev 1325
evolve: add --rev option to the evolve command
This patch is part of a series of patches to refactor the evolve method and
make it more readable. We introduce a new --rev flag to specify a revset
where to solve the troubles instead of looking from the parent changeset.
All add a test checks that --rev works with several commits
Laurent Charignon <lcharignon@fb.com> [Tue, 05 May 2015 14:25:35 -0700] rev 1324
evolve: extract cleanup logic in the evolve function
We are going to need to reuse the cleanup logic when introducing --rev, so
we extract it in a method to avoid code duplication.
Laurent Charignon <lcharignon@fb.com> [Thu, 30 Apr 2015 14:25:37 -0700] rev 1323
evolve: simplify the evolve function
We compute the troubles once and use it in two places instead of recomputing
them just to count them.
Laurent Charignon <lcharignon@fb.com> [Tue, 05 May 2015 17:15:06 -0700] rev 1322
evolve: optimize the computation of the troubled() revset
We take the implementation from _counttroubles() and rely on the more
efficient & operation for revset instead of laying down the entire set with %ld.
Durham Goode <durham@fb.com> [Tue, 05 May 2015 13:32:01 -0700] rev 1321
inhibit: don't inhibit pinned commits during rebase
During a rebase we pin certain commits to always be visible. This caused the
inhibit extension to inhibit them when a transaction closed. Let's make inhibit
aware of such pins and not obsolete them.
Laurent Charignon <lcharignon@fb.com> [Mon, 04 May 2015 16:56:46 -0700] rev 1320
evolve: extract the logic to solve one change into a method
The goal is to later reuse this method to implement the --rev flag for
evolve that solves the troubles in a revset.
Laurent Charignon <lcharignon@fb.com> [Mon, 04 May 2015 16:56:05 -0700] rev 1319
evolve: add new variable and comment
Add comment and introduce a new variable to keep track of if the progress ui
is shown. Later on we will use this variable in the implementation of the --rev
option.
Laurent Charignon <lcharignon@fb.com> [Mon, 04 May 2015 16:09:05 -0700] rev 1318
evolve: move code to track progress and start node
This makes it easier to refactor the evolve function in this serie of patches.
Laurent Charignon <lcharignon@fb.com> [Thu, 30 Apr 2015 14:00:07 -0700] rev 1317
evolve: renaming of a variable
tro was not a really descriptive name, replacing it with nexttrouble.
Laurent Charignon <lcharignon@fb.com> [Mon, 04 May 2015 16:01:45 -0700] rev 1316
evolve: refactoring of the code displaying error when no trouble found
Before this patch, we had many return statements in the evolve function
especially in the part in charge of displaying errors when no troubles
were found. We move this code in a separate function.