view MANIFEST.in @ 1594:de43a3e6b358

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.
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Fri, 22 Jan 2016 21:41:59 +0900
parents 9cdd32b45bba
children be85d7ce8536
line wrap: on
line source

recursive-include docs/figures *.svg
include docs/figures/hgview-example.png
include docs/*.rst
include docs/*.py
include docs/tutorials/*.t
include docs/makefile
include docs/static/*.svg
include hgext/__init__.py
include hgext/evolve.py
include hgext/pushexperiment.py
include hgext/simple4server.py
include setup.py
include README
include COPYING
include tests/*.t
include tests/*.py
include tests/_exc-util.sh
include tests/dummyssh
exclude tests/test-oldconvert.t
exclude tests/test-qsync.t
exclude tests/test-drop.t