Thu, 04 Feb 2016 01:19:14 +0000 evolve: write our own custom evolvestate file
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 04 Feb 2016 01:19:14 +0000] rev 1597
evolve: write our own custom evolvestate file Since for ever, we were using 'graftstate' to record the node currently being evolve and allow 'hg evolve --continue' we now move to our on 'evolvestate' file. This remove and issue with 'hg summary' listing interrupted evolve as graft. This also open the way for storing more data into that file and allow proper --abort and --continue of the whole evolve operation (and not just the last one). The whole thing is very hacky but at least there is some progress. Thanks goes to Shusen Liu for initiating this work.
Thu, 04 Feb 2016 10:16:52 +0000 readme: update readme for issue 4966
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 04 Feb 2016 10:16:52 +0000] rev 1596
readme: update readme for issue 4966
Wed, 03 Feb 2016 23:21:50 +0000 test: back hash change from 'extra' content change out
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 03 Feb 2016 23:21:50 +0000] rev 1595
test: back hash change from 'extra' content change out The changesets 13701c3fed9c, 3e907ff1981f and 54394d2aaf5e were introduced to handle a change to the way extra were carried out by various command in core. This had to be backout for 3.7.1 as is broken multiple third party extension. We backout the test update as a result. Core changesets performing the backout: ce9696193175::b698abf971e7
Fri, 22 Jan 2016 21:41:59 +0900 evolve: close transaction if conflict is detected in relocate (issue4966)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 22 Jan 2016 21:41:59 +0900] rev 1594
evolve: close transaction if conflict is detected in relocate (issue4966) Before this patch, transaction is aborted, if conflict is detected at merging while "hg evolve". Since 8f2ff40fe9c9 (or 3.6) of Mercurial, aborting transaction discards all dirstate changes inside transaction scope for "transactional dirstate" (see below wiki page for detail about it). https://mercurial.selenic.com/wiki/DirstateTransactionPlan Therefore, just aborting transaction causes unchanged (and unexpected) dirstate, even though subsequent commands require dirstate changes while "hg evolve". To keep dirstate changes while "hg evolve", this patch closes current running transaction, if conflict is detected in relocate(), even though exception is raised as usual. Even though "save dirstate and restore it after aborting transaction" like shelve._aborttransaction() of Mercurial can also solve this issue, this patch chose closing transaction for similarity with failure for conflict at "hg unshelve". In addition to it, closing transaction can keep any previous (implicit) changes. In newly added test, there is an additional ancestor revision, which "will be evolved safely". It is used to examine whether failure for conflict doesn't discard already relocated revision(s) while "hg evolve". It is fact for current implementation that "hg evolve" relocates each revisions in separated transactions and already relocated ones are never discarded, even if subsequent relocation fails. Though, this examination is useful to detect unintentional regression in the future.
Sat, 23 Jan 2016 06:18:01 +0900 evolve: remove meaningless transaction nesting
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 23 Jan 2016 06:18:01 +0900] rev 1593
evolve: remove meaningless transaction nesting Before this patch, functions below nest transaction scope, even though they are invoked only inside a transaction scope created at _solveone(). - _solvebumped() - _solvedivergent() - relocate() via _solveunstable() or _solvebumped() Transaction nesting is useful for localizing "success" (e.g. one scope per commit inside wider scope for multiple committing). But such nesting is redundant for _solveone(), because there is no code path, which causes failure after successfully closing inner transaction(s). In addition to it, this nesting makes it complicated to close current transaction successfully with exception raising inside inner scope, like "hg shelve" at detection of conflicts. "tr.close()" is required at each outer scopes for such case. To remove meaningless transaction nesting, this patch replaces repo.transaction() in functions above by repo.currenttransaction(). This reuses transaction created at _solveone(). This patch also adds 'assert tr' after getting current running transaction, to avoid invocation of functions above without transaction.
Tue, 26 Jan 2016 15:42:01 -0800 evolve: extract logic to new method _evolvemerge
Shusen LIU <liushusen@fb.com> [Tue, 26 Jan 2016 15:42:01 -0800] rev 1592
evolve: extract logic to new method _evolvemerge This patch introduces a new method _evolvemerge to merge orig to dest in relocate method. This simplifies the code of the method relocate and allows us to re-use it later in the scope of the rework of 'hg evolve --continue'
Sat, 30 Jan 2016 16:53:12 +0100 test: add extra expected output
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 30 Jan 2016 16:53:12 +0100] rev 1591
test: add extra expected output (I forgot to amend...)
(0) -1000 -300 -100 -30 -10 -7 +7 +10 +30 +100 +300 +1000 +3000 tip