Mercurial > evolve
view tests/testlib/exchange-obsmarker-util.sh @ 3805:2410e7063692
evolve: implement resolution of content-divergence when on differet parents
This patch implements the basic version of resolution of content-divergence
changesets when they are on different parents but one of the parent is gca of
both the different parents.
The functionality first relocates the divergent changeset which was left behind
and then resolves the content-divergence like it resolves in normal cases.
This is a very basic implementation because it still does not work on
interrupted evolution. Test changes in this patch shows the basic functionality
working. The output of dry-run is also required to be tweaked in such cased.
Upcoming patches will add more tests and will improve the implementation to work
during conflicts too.
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Fri, 01 Jun 2018 19:52:06 +0530 |
parents | 51a1dd295fe0 |
children |
line wrap: on
line source
#!/bin/sh # setup config and various utility to test obsolescence marker exchanges tests cat >> $HGRCPATH <<EOF [web] # We test http pull and push, drop authentication requirement push_ssl = false allow_push = * [ui] # simpler log output logtemplate ="{node|short} ({phase}): {desc}\n" [phases] # non publishing server publish=False [experimental] # reduce output changes bundle2-output-capture=True # enable evolution evolution=all evolution.effect-flags = yes [extensions] # we need to strip some changeset for some test cases hgext.strip= [alias] # fix date used to create obsolete markers. debugobsolete=debugobsolete -d '0 0' [extensions] hgext.strip= EOF echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH mkcommit() { echo "$1" > "$1" hg add "$1" hg ci -m "$1" } getid() { hg log --hidden --template '{node}\n' --rev "$1" } setuprepos() { echo creating test repo for test case $1 mkdir $1 cd $1 echo - pulldest hg init pushdest cd pushdest mkcommit O hg phase --public . cd .. echo - main hg clone -q pushdest main echo - pushdest hg clone -q main pulldest echo 'cd into `main` and proceed with env setup' } inspect_obsmarkers (){ # This exist as its own function to help the evolve extension reuse the tests as is. # The evolve extensions version will includes more advances query (eg: # related to obsmarkers discovery) to this. echo 'obsstore content' echo '================' hg debugobsolete echo 'obshashtree' echo '===========' hg debugobsrelsethashtree echo 'obshashrange' echo '============' hg debugobshashrange --subranges --rev 'head()' } dotest() { # dotest TESTNAME [TARGETNODE] [PUSHFLAGS+] # # test exchange for the given test case. # # This function performs push and pull in all directions through all # protocols and display the resulting obsolescence markers on all sides. testcase=$1 shift target="$1" if [ $# -gt 0 ]; then shift fi targetnode="" desccall="" cd $testcase echo "## Running testcase $testcase" if [ -n "$target" ]; then desccall="desc("\'"$target"\'")" targetnode="`hg -R main id -qr \"$desccall\"`" echo "# testing echange of \"$target\" ($targetnode)" fi echo "## initial state" echo "# obstore: main" hg -R main debugobsolete | sort echo "# obstore: pushdest" hg -R pushdest debugobsolete | sort echo "# obstore: pulldest" hg -R pulldest debugobsolete | sort if [ -n "$target" ]; then echo "## pushing \"$target\"" from main to pushdest hg -R main push -r "$desccall" $@ pushdest else echo "## pushing from main to pushdest" hg -R main push pushdest $@ fi echo "## post push state" echo "# obstore: main" hg -R main debugobsolete | sort echo "# obstore: pushdest" hg -R pushdest debugobsolete | sort echo "# obstore: pulldest" hg -R pulldest debugobsolete | sort if [ -n "$target" ]; then echo "## pulling \"$targetnode\"" from main into pulldest hg -R pulldest pull -r $targetnode $@ main else echo "## pulling from main into pulldest" hg -R pulldest pull main $@ fi echo "## post pull state" echo "# obstore: main" hg -R main debugobsolete | sort echo "# obstore: pushdest" hg -R pushdest debugobsolete | sort echo "# obstore: pulldest" hg -R pulldest debugobsolete | sort cd .. }