Mercurial > hg > mercurial-crew-with-dirclash
view tests/fish-merge @ 2021:fc22ed56afe3
Fix hg push and hg push -r sometimes creating new heads without --force.
Fixing issue179.
The algorithm checks if there not more new heads on the remote side than heads
which become non-heads due to getting children.
Pushing this repo:
m
/\
3 3a|
|/ /
2 2a
|/
1
to a repo only having 1, 2 and 3 didn't abort requiring --force before.
Added test cases for this and some doc strings for used methods.
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Wed, 29 Mar 2006 22:35:21 +0200 |
parents | 0902ffece4b4 |
children |
line wrap: on
line source
#!/bin/sh set -e set -x # skip commit logs HGMERGE=tkmerge; export HGMERGE EDITOR=true; export EDITOR rm -rf m m1 m2 mkdir m cd m echo "m this that" echo "this" > a echo "that" > b hg init hg addremove hg commit echo "a:" `hg dump a` "b:" `hg dump b` echo cd .. echo "m2 this that " mkdir m2 cd m2 hg branch ../m hg checkout echo "a:" `hg dump a` "b:" `hg dump b` echo cd ../m echo "m this1 that " echo "this1" > a hg commit echo "a:" `hg dump a` "b:" `hg dump b` echo cd .. echo "m1 this1 that " mkdir m1 cd m1 hg branch ../m hg checkout echo "a:" `hg dump a` "b:" `hg dump b` echo cd ../m1 echo "m1 this1 that1" echo "that1" > b hg commit echo "a:" `hg dump a` "b:" `hg dump b` echo cd ../m2 echo "m2 this that2" echo "that2" > b hg commit echo "a:" `hg dump a` "b:" `hg dump b` echo cd ../m1 echo "m1:m2 this1 that1 that2" hg merge ../m2 # b should conflict, a should be fine echo "a:" `hg dump a` "b:" `hg dump b` echo cd ../m2 echo "m2 this2 that2" echo "this2" > a hg commit echo "a:" `hg dump a` "b:" `hg dump b` echo cd ../m2 echo "m2:m this12 that2" hg merge ../m # a should conflict, b should be fine echo "a:" `hg dump a` "b:" `hg dump b` echo # now here's the interesting bit # if we choose ancestor by file, no conflicts # otherwise we've got two equally close ancestors, each with a conflict # if we go back to the root, we'll have both conflicts again echo "m2:m1 this12 that12" hg merge ../m1 # should be clean echo "a:" `hg dump a` "b:" `hg dump b` echo