# HG changeset patch # User Pierre-Yves David # Date 1347356700 -7200 # Node ID 362e65fc6146e194ad3fb4c8278ee9651d9910e7 # Parent b047e9417d96d3463ade0a4e6b0dbcedcad5e5e5 evolve-cmd: fix merge error detection for external tools. diff -r b047e9417d96 -r 362e65fc6146 hgext/evolve.py --- a/hgext/evolve.py Mon Sep 10 18:56:44 2012 +0200 +++ b/hgext/evolve.py Tue Sep 11 11:45:00 2012 +0200 @@ -1232,15 +1232,18 @@ cmdutil.duplicatecopies(repo, orig.node(), dest.node()) nodesrc = orig.node() destphase = repo[nodesrc].phase() - if rebase.rebasenode.func_code.co_argcount == 5: - # rebasenode collapse argument was introduced by - # d1afbf03e69a (2.3) - rebase.rebasenode(repo, orig.node(), dest.node(), - {node.nullrev: node.nullrev}, False) - else: - rebase.rebasenode(repo, orig.node(), dest.node(), - {node.nullrev: node.nullrev}) try: + if rebase.rebasenode.func_code.co_argcount == 5: + # rebasenode collapse argument was introduced by + # d1afbf03e69a (2.3) + r = rebase.rebasenode(repo, orig.node(), dest.node(), + {node.nullrev: node.nullrev}, False) + else: + r = rebase.rebasenode(repo, orig.node(), dest.node(), + {node.nullrev: node.nullrev}) + if r[-1]: #some conflict + raise util.Abort( + 'unresolved merge conflicts (see hg help resolve)') nodenew = rebase.concludenode(repo, orig.node(), dest.node(), node.nullid) except util.Abort, exc: diff -r b047e9417d96 -r 362e65fc6146 tests/test-stabilize-conflict.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-stabilize-conflict.t Tue Sep 11 11:45:00 2012 +0200 @@ -0,0 +1,250 @@ +================================================================= +This files test the proper behavior of evo during merge conflict. +================================================================= + +Initial setup + + $ cat >> $HGRCPATH < [ui] + > interactive=false + > merge=internal:merge + > [defaults] + > amend=-d "0 0" + > [merge-tools] + > touch.checkchanged=true + > touch.gui=true + > touch.args=babar + > [extensions] + > hgext.rebase= + > EOF + $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext/evolve.py" >> $HGRCPATH + + +create a simple repo + + $ hg init repo + $ cd repo + $ cat << EOF > babar + > un + > deux + > trois + > quatre + > cinq + > EOF + $ hg add babar + $ hg commit -m "babar count up to five" + $ cat << EOF >> babar + > six + > sept + > huit + > neuf + > dix + > EOF + $ hg commit -m "babar count up to ten" + $ cat << EOF >> babar + > onze + > douze + > treize + > quatorze + > quinze + > EOF + $ hg commit -m "babar count up to fifteen" + + +proper behavior without conflict +---------------------------------- + + $ hg gdown + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + [1] babar count up to ten + $ sed -i'' 's/huit/height/' babar + $ hg diff + diff -r 9d5daf8bd956 babar + --- a/babar Thu Jan 01 00:00:00 1970 +0000 + +++ b/babar * (glob) + @@ -5,6 +5,6 @@ + cinq + six + sept + -huit + +height + neuf + dix + $ hg amend + 1 new unstable changesets + $ hg evolve + move:[2] babar count up to fifteen + atop:[4] babar count up to ten + merging babar + $ hg resolve -l + $ hg log -G + @ changeset: 5:fd62611d0178 + | tag: tip + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: babar count up to fifteen + | + o changeset: 4:83066dedff55 + | parent: 0:29ec1554cfaf + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: babar count up to ten + | + o changeset: 0:29ec1554cfaf + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: babar count up to five + + + +proper behavior with conflict using internal:merge +-------------------------------------------------- + + $ hg gdown + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + [4] babar count up to ten + $ sed -i'' 's/dix/ten/' babar + $ hg diff + diff -r 83066dedff55 babar + --- a/babar Thu Jan 01 00:00:00 1970 +0000 + +++ b/babar * (glob) + @@ -7,4 +7,4 @@ + sept + height + neuf + -dix + +ten + $ hg amend + 1 new unstable changesets + $ hg evolve + move:[5] babar count up to fifteen + atop:[7] babar count up to ten + merging babar + warning: conflicts during merge. + merging babar incomplete! (edit conflicts, then use 'hg resolve --mark') + evolve failed! + fix conflict and run "hg evolve --continue" + abort: unresolved merge conflicts (see hg help resolve) + [255] + $ hg resolve -l + U babar + $ hg log -G + @ changeset: 7:cc96f75eae0b + | tag: tip + | parent: 0:29ec1554cfaf + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: babar count up to ten + | + | @ changeset: 5:fd62611d0178 + | | user: test + | | date: Thu Jan 01 00:00:00 1970 +0000 + | | summary: babar count up to fifteen + | | + | x changeset: 4:83066dedff55 + |/ parent: 0:29ec1554cfaf + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: babar count up to ten + | + o changeset: 0:29ec1554cfaf + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: babar count up to five + +(fix the conflict and continue) + + $ hg revert -r 5 --all + reverting babar + $ sed -i'' 's/dix/ten/' babar + $ hg resolve --all -m + $ hg evolve --continue + grafting revision 5 + $ hg resolve -l + $ hg log -G + @ changeset: 8:ce7ee8fecf30 + | tag: tip + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: babar count up to fifteen + | + o changeset: 7:cc96f75eae0b + | parent: 0:29ec1554cfaf + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: babar count up to ten + | + o changeset: 0:29ec1554cfaf + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: babar count up to five + +proper behavior with conflict using an external merge tools +----------------------------------------------------------- + + $ sed -i'' 's/merge=.*/merge=touch/' $HGRCPATH + $ sed -i'' 's/touch.gui=.*/touch.gui=false/' $HGRCPATH + $ hg gdown + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + [7] babar count up to ten + $ sed -i'' 's/ten/zehn/' babar + $ hg diff + diff -r cc96f75eae0b babar + --- a/babar Thu Jan 01 00:00:00 1970 +0000 + +++ b/babar * (glob) + @@ -7,4 +7,4 @@ + sept + height + neuf + -ten + +zehn + $ hg amend + 1 new unstable changesets + $ sed -i'' 's/interactive=.*/interactive=true/' $HGRCPATH + $ yes n 2> ../shutup | HGMERGE=touch hg evolve + move:[8] babar count up to fifteen + atop:[10] babar count up to ten + merging babar + output file babar appears unchanged + was merge successful (yn)? merging babar failed! + evolve failed! + fix conflict and run "hg evolve --continue" + abort: unresolved merge conflicts (see hg help resolve) + [255] + $ hg resolve -l + U babar + $ hg log -G + @ changeset: 10:02c637e61375 + | tag: tip + | parent: 0:29ec1554cfaf + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: babar count up to ten + | + | @ changeset: 8:ce7ee8fecf30 + | | user: test + | | date: Thu Jan 01 00:00:00 1970 +0000 + | | summary: babar count up to fifteen + | | + | x changeset: 7:cc96f75eae0b + |/ parent: 0:29ec1554cfaf + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: babar count up to ten + | + o changeset: 0:29ec1554cfaf + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: babar count up to five + + $ cat babar + un + deux + trois + quatre + cinq + six + sept + height + neuf + zehn