Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 04 Feb 2016 10:16:52 +0000] rev 1596
readme: update readme for issue 4966
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
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.
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.
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'
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...)
Jeroen Vaelen <jeroen@fb.com> [Fri, 22 Jan 2016 19:16:38 +0000] rev 1590
inhibit: make bookmark -D work with a list of bookmarks
`hg bookmark -D` was not accepting a list of bookmarks. This behavior was
inconsistent with the behavior of `hg bookmark -d`, which does accept multiple
bookmarks.
Laurent Charignon <lcharignon@fb.com> [Sun, 17 Jan 2016 16:55:40 -0800] rev 1589
touch: prompt the user for what to do with the revived changeset
This patch improves our interface for reviving changesets.
This patch makes touch not assume that the user wants to create divergence by
default and gives a prompt instead. The prompt is skipped for changeset that
have no living successor as no divergence would be created by reviving them
anyway.
To restore the previous behavior, one should now use the --allowdivergence flag.
The prompt looks like:
[10] <description>
reviving this changeset will create divergence unless you make a duplicate.
(a)llow divergence or (d)uplicate the changeset? a
In further patches we will want to add one more choice to that prompt, for
example having a marker between the old and revived nodes but no divergence
displayed on the UI.
Laurent Charignon <lcharignon@fb.com> [Wed, 27 Jan 2016 13:57:08 -0800] rev 1588
inhibit: fix compat with rebaseskipobsolete
We wrap _computeobsoletenotrebased and _clearrebased to fix the following case:
- Assuming that we have markers from revisions of the rebase set and
destination set and that these markers are inhibited
- At the end of the rebase the nodes are still visible because rebase operate
without inhibition and skip these nodes
Had we not have those markers to begin with the revisions could be hidden at
the end of the rebase.
We keep track in repo._obsoletenotrebased of the obsolete commits skipped by
the rebase and lift the inhibition at the end of the rebase.
We add three test cases to make sure that the edge cases are covered.
Durham Goode <durham@fb.com> [Tue, 19 Jan 2016 15:30:23 -0800] rev 1587
test: update with new graft output
Graft now has a --continue it seems. We need to update our test output.
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 17 Jan 2016 22:02:44 -0800] rev 1586
merge with stable
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 17 Jan 2016 21:09:45 -0800] rev 1585
tests: fix change to help output
Core have made minor update to its documentation.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 14 Jan 2016 14:02:05 -0800] rev 1584
tests: change some double quotes to single quotes
Since hg core change 58f8b29c37ff (minirst: change hgrole to use
single quotes, 2016-01-12)
Laurent Charignon <lcharignon@fb.com> [Thu, 14 Jan 2016 12:02:38 -0800] rev 1583
inhibit: fix compatibility with changes in rebase
Because we compute the obsolete revisions before calling
_computeobsoletenotrebased lifting the inhibition stopped working
since 8a8ee8338e6 in core. This patch makes it work again.
Laurent Charignon <lcharignon@fb.com> [Sun, 10 Jan 2016 10:52:24 -0800] rev 1582
inhibit: fix _filterpublic
Before this patch, _filterpublic would always filter rep._obsinhibit and not
its "nodes" argument. Fortunately, we always called it with repo._obsinhibit as
its "nodes" argument!
Laurent Charignon <lcharignon@fb.com> [Mon, 04 Jan 2016 14:01:17 -0800] rev 1581
debian: blacklist test-inhibit.t
Since we don't add inhibit to the debian packages, let's not run test-inhibit.t
Laurent Charignon <lcharignon@fb.com> [Mon, 04 Jan 2016 08:39:58 -0800] rev 1580
evolve: duplicate evolution summary entries (issue5014)
Since we added summary entries for trouble changesets in core we don't need to
display it anymore in evolve for the version of hg with the change. Tested with
3.6.1 and 3.6.2.
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 03 Jan 2016 16:47:57 +0100] rev 1579
merge with stable
Pierre-Yves David <pierre-yves.david@fb.com> [Sun, 03 Jan 2016 15:51:36 +0100] rev 1578
merge with the rest of stable
Faheem Mitha <faheem@faheem.info> [Wed, 30 Dec 2015 03:48:11 +0530] rev 1577
debian: update changelog to 5.2.1
Andrew Halberstadt <ahalberstadt@mozilla.com> [Thu, 26 Nov 2015 20:38:31 -0500] rev 1576
evolve: handle merge commit with single obsolete parent (issue4389)
This handles evolving merge commits with a single obsolete parent. Merge
commits with two obsolete parents are still unsupported. Note this depends
on a change to merge.graft in core. Older versions of mercurial will not
have this functionality. Also, test-unstable.t will fail with older
versions.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 22 Dec 2015 14:11:09 +0000] rev 1575
merge with stable
Greg Ward <greg@gerg.ca> [Sat, 07 Nov 2015 13:39:59 -0500] rev 1574
evolve: rewrite help for prune command
Greg Ward <greg@gerg.ca> [Sat, 07 Nov 2015 13:38:49 -0500] rev 1573
evolve: improve help for split command
Greg Ward <greg@gerg.ca> [Sat, 07 Nov 2015 13:38:22 -0500] rev 1572
evolve: improve help for prev, next commands
Greg Ward <greg@gerg.ca> [Sat, 07 Nov 2015 13:37:26 -0500] rev 1571
evolve: improve the confusing docstring for _orderrevs()
Greg Ward <greg@gerg.ca> [Sat, 07 Nov 2015 09:48:04 -0500] rev 1570
evolve: improve help for some debug commands
Greg Ward <greg@gerg.ca> [Fri, 06 Nov 2015 21:42:06 -0500] rev 1569
evolve: scattered typo fixes in comments, docstrings
Shusen LIU <liushusen@fb.com> [Mon, 14 Dec 2015 17:21:11 -0800] rev 1568
evolve: extract logic to new method _finalizerelocate
This patch introduces a new method _finalizerelocate to finalize current state
after merge states in relocate method.
This simplifies the code of the method relocate and allows us to modify it
later to support a continued keywork to implement evolve state.
Shusen LIU <liushusen@fb.com> [Mon, 14 Dec 2015 17:02:55 -0800] rev 1567
evolve: extract logic to new method _relocatecommit
This patch introduces a new method _relocatecommit to commit current state
after merge states in relocate method.
This simplifies the code of the method relocate and allows us to modify it later to
support a continued keywork to implement evolve state.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 17 Dec 2015 16:00:32 +0000] rev 1566
evolve: apply API change to 'merge.update'
Mercurial core43c00ca887d1 (future 3.7) changed the signature of the
'mercurial.merge.update', this impact our code so we update it. This
Martin von Zweigbergk <martinvonz@google.com> [Mon, 14 Dec 2015 16:29:55 -0800] rev 1565
debian: don't refer to deleted tests/run-tests.py in debian/rules
tests/run-tests.py was deleted in 25a0c31882df (tests: remove the
custom run-tests.py, 2015-11-02), but we still refer to it in
debian/rules. Fix by having the user define a HGSRC variable when
calling 'debuild' (with e.g '-e HGSRC=~/hg').
Shubhanshu Agrawal <agrawal.shubhanshu@gmail.com> [Fri, 11 Dec 2015 12:27:37 -0800] rev 1564
prune: changing bookmark argument to be a list
Currently prune works with a single bookmark
the changes in this patch modifies the prune
command to accept a list of bookmarks
Also changes to inhibit module which internally
calls the cmdprune function. the change is to
wrap the bookmark input into a list.
Shubhanshu Agrawal <agrawal.shubhanshu@gmail.com> [Fri, 11 Dec 2015 10:42:46 -0800] rev 1563
prune: remove a list of bookmarks
Currently prune works with a single bookmark,
the changes in this patch modifies the prune module
to work with a list of bookmarks
Building on this we can take a list of bookmarks as input
and remove all of them in a single go
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 11 Dec 2015 11:15:33 +0000] rev 1562
test: adapt to fix to "known" wireprotocol command
Core fixed a bug in discovery (in b64b6fdc5c9b) and this is showing up in our
test output.
Shubhanshu Agrawal <agrawal.shubhanshu@gmail.com> [Thu, 10 Dec 2015 15:55:07 -0800] rev 1561
evolve: renaming local variables
Renaming local variables to be more precise, i want to store
a different list of bookmarks(input-list) and it would be hard to
understand what marks represents in that change therefore
renaming it to repomarks.
Renames mark to bookmark, which will make the changes in next
patch more understandable, when it is pluraized.
Also renames bookmarks (module) to bookmarksmod so as to
free up the name when bookmark gets pluralized.
Laurent Charignon <lcharignon@fb.com> [Thu, 10 Dec 2015 15:34:34 -0800] rev 1560
inhibit: backout 23a34dce5131 remove unused bookmark operation wrapping
This breaks potentially a lot of things. Let's give a change to extensions
maintainers to adapt to the new bookmarks.write api before removing this code
right away.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 11 Dec 2015 10:51:04 +0000] rev 1559
readme: add something about bookmark within transaction
Laurent Charignon <lcharignon@fb.com> [Thu, 10 Dec 2015 15:09:25 -0800] rev 1558
commitwrapper: use bookmarks.recordchange instead of bookmarks.write
Before this patch we were using the deprecated API bookmarks.write, this patch
replace its usage by the new API call bookmarks.recordchange.
Laurent Charignon <lcharignon@fb.com> [Thu, 10 Dec 2015 14:43:31 -0800] rev 1557
next: replace call to bookmarks.write by bookmarks.recordchange
bookmarks.write is now deprecated, we are moving to the new api:
bookmarks.recordchange.
Laurent Charignon <lcharignon@fb.com> [Thu, 10 Dec 2015 14:43:00 -0800] rev 1556
previous: replace call to bookmarks.write by bookmarks.recordchange
bookmarks.write is now deprecated, we are moving to the new api:
bookmarks.recordchange.
Laurent Charignon <lcharignon@fb.com> [Thu, 10 Dec 2015 14:17:27 -0800] rev 1555
prune: use bookmarks.recordchange instead of bookmarks.write
Before this patch we were using the deprecated bookmarks.write instead of
bookmarks.recordchange in prune
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 11 Dec 2015 10:49:29 +0000] rev 1554
transaction: fix release order in 'rewrite'
This was wrong for quite sometime.
Laurent Charignon <lcharignon@fb.com> [Fri, 04 Dec 2015 15:28:29 -0800] rev 1553
check-code: make drophack comply with check-code
Laurent Charignon <lcharignon@fb.com> [Fri, 04 Dec 2015 15:28:00 -0800] rev 1552
check-code: make directaccess.py comply with check-code
Laurent Charignon <lcharignon@fb.com> [Fri, 04 Dec 2015 15:31:19 -0800] rev 1551
check-code: make inhibit.py comply with check-code
Laurent Charignon <lcharignon@fb.com> [Fri, 04 Dec 2015 15:31:34 -0800] rev 1550
check-code: make obsolete.py comply with check-code
Laurent Charignon <lcharignon@fb.com> [Fri, 04 Dec 2015 15:21:16 -0800] rev 1549
check-code: make pushexperiment.py comply with check-code
Laurent Charignon <lcharignon@fb.com> [Fri, 04 Dec 2015 15:19:36 -0800] rev 1548
check-code: make simple4server.py comply with check-code
Laurent Charignon <lcharignon@fb.com> [Fri, 04 Dec 2015 15:10:53 -0800] rev 1547
check-code: make evolve.py comply with check-code
Laurent Charignon <lcharignon@fb.com> [Fri, 04 Dec 2015 14:00:59 -0800] rev 1546
evolve: fix test-inhibit to match latest hg
When I fixed an issue in core about rebaseset 40a2f972f26d (that I introduced
before), it restored the original behavior of inhibit with rebase. This patch
fixes test-inhibit to match the latest hg.
Laurent Charignon <lcharignon@fb.com> [Fri, 04 Dec 2015 14:00:48 -0800] rev 1545
evolve: fix test-stabilize-conflict.t to match new extra computation in core
Recent patches changed the way we compute extras for rebase and graft. This
changes the hashes in evolve's tests. This patch fixes the test
test-stabilize-conflict.t.
Laurent Charignon <lcharignon@fb.com> [Fri, 04 Dec 2015 14:01:28 -0800] rev 1544
evolve: fix test-sharing.t to match new extra computation in core
Recent patches changed the way we compute extras for rebase and graft. This
changes the hashes in evolve's tests. This patch fixes the test
test-sharing.t
Laurent Charignon <lcharignon@fb.com> [Fri, 04 Dec 2015 14:01:36 -0800] rev 1543
evolve: fix test-tutorial.t to match new extra computation in core
Recent patches changed the way we compute extras for rebase and graft. This
changes the hashes in evolve's tests. This patch fixes the test
test-tutorial.t
Laurent Charignon <lcharignon@fb.com> [Mon, 30 Nov 2015 16:48:40 -0800] rev 1542
inhibit: make rebase see obsolescence even for visible nodes
Rebase changed recently to take advantage of obsolescence markers to reduce
the number of conflicts to resolve. Inhibit users were unable to leverage this
new feature because none of their visible nodes could be obsolete. This patch
makes the nodes that would be obsolete without inhibit, actually obsolete for
the duration of the rebase to take advantage of the feature mentioned before.
Laurent Charignon <lcharignon@fb.com> [Tue, 24 Nov 2015 17:16:27 -0800] rev 1541
inhibit: remove unused bookmark operation wrapping
Before this patch, inhibit was wrapping bookmarks.write and
bookmarks.recordchange. Since all the usage of bookmarks.write are not replaced
by bookmarks.recordchange all bookmarks operation happen in a transaction.
Inhibit already wraps the transaction mechanism to make sure that no revision
can end up being obsolete and visible. This makes the wrapping of
bookmarks.write superfluous.
Wrapping bookmarks.recordchange was wrong in the first place and redundant with
wrapping transactions.
Laurent Charignon <lcharignon@fb.com> [Tue, 01 Dec 2015 10:25:38 -0800] rev 1540
inhibit: update test with new behavior from core
The recent changes in core (to make sure that all bookmarks write are done at
the end of a transaction) changed the behavior of inhibit. When one rebases
a set of hidden revs somewhere, the hidden revs become visible at the end of
the rebase. Both the previous behavior and new behavior seems acceptable but
the tests have to be changed subsequently. This patch modifies one of the test
for inhibit when the case mentioned above happens. We prune the revs inhibited
by the rebase to make the change minimal.
Laurent Charignon <lcharignon@fb.com> [Thu, 19 Nov 2015 10:47:32 -0800] rev 1539
inhibit: remove unused import
The error module from mercurial was imported but unused in the inhibit code.
Laurent Charignon <lcharignon@fb.com> [Fri, 20 Nov 2015 10:30:42 -0800] rev 1538
inhibit: improve handling of error cases for bookmark -D
Before this patch bookmark -D was crashing in some cases like:
hg book -Dmaster-fix. This was because -m is a valid option for hg bookmark.
This patch disallows using -m with -D (moving and pruning does not make much
sense) and throws an error instead of crashing if the command is malformed.
Laurent Charignon <lcharignon@fb.com> [Wed, 18 Nov 2015 13:47:26 -0800] rev 1537
directaccess: fix case of shortened hash containing only digits
For directaccess, there are four cases for what looks like short hashes made
of digits only:
1 | the hash is a revision number and not a short hash for another revision:
we don't change the visibility
2 | the hash is a revision number and a short hash for another revision:
we don't change the visibility
3 | the hash is not a revision number and not a short hash for another revision:
we don't change the visibility
4 | the hash is not a revision number but is a short hash for another revision:
we make it visible
Before the patch we were not lifting visibility in case number 4. This patch
fixes the issue.