evolve: handle stabilization of merge changeset with both parents obsoleted
This patch adds logic to stabilize an orphan merge changeset having both parents
obsoleted.
The logic tries to first stabilize the merge changeset on successor of second
parent and then stabilize the new changeset formed on the successor of first
parent. We are stabilizing on second parent first and then to second parent to
preserve the first parent's successor as first parent of the merge changeset.
Conflicts can occcur and we can loose processing information, therefore we store
a variable in statefile `orphanmerge` which represents whether we are processing
a merge changeset with both parents obsoleted.
Thanks to Pierre-Yves David for suggesting this way and helping to understand
the correctness of this.
More rigourous test cases for this will be added in next patch.
VERSION=$(shell python setup.py --version)
PYTHON=python
all: help
deb-prepare:
python setup.py sdist --dist-dir ..
mv -f ../hg-evolve-$(VERSION).tar.gz ../mercurial-evolve_$(VERSION).orig.tar.gz
tar xf ../mercurial-evolve_$(VERSION).orig.tar.gz
rm -rf ../mercurial-evolve_$(VERSION).orig
mv hg-evolve-$(VERSION) ../mercurial-evolve_$(VERSION).orig
cp -r debian/ ../mercurial-evolve_$(VERSION).orig/
@cd ../mercurial-evolve_$(VERSION).orig && echo 'debian build directory ready at' `pwd`
install-home:
$(PYTHON) setup.py install --home="$(HOME)" --prefix="" --force
# test targets
TESTFLAGS ?= $(shell echo $$HGTESTFLAGS)
HGTESTS=$(HGROOT)/tests
help:
@echo 'Commonly used make targets:'
@echo ' deb-prepare - prepare the build of a debian package'
@echo ' tests - run all tests in the automatic test suite'
@echo ' all-version-tests - run all tests against many hg versions'
@echo ' tests-%s - run all tests in the specified hg version'
all: help
_check_hgroot:
ifeq ($(HGROOT),)
$(error HGROOT is not set to the root of the hg source tree)
endif
tests: _check_hgroot
cd tests && $(PYTHON) $(HGTESTS)/run-tests.py $(TESTFLAGS)
# /!\ run outside of the compatibility branch output test will likely fails
test-%: _check_hgroot
cd tests && $(PYTHON) $(HGTESTS)/run-tests.py $(TESTFLAGS) $@
tests-%: _check_hgroot
hg -R $(HGROOT) checkout $$(echo $@ | sed s/tests-//) && \
(cd $(HGROOT) ; $(MAKE) clean ) && \
cd tests && $(PYTHON) $(HGTESTS)/run-tests.py $(TESTFLAGS)
# build a script to extract declared version
all-version-tests: tests-@
.PHONY: tests all-version-tests