D5962: copies: add test that makes both the merging csets dirty and fails

khanchi97 (Sushil khanchi) phabricator at mercurial-scm.org
Mon Feb 25 14:32:57 EST 2019


khanchi97 updated this revision to Diff 14240.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D5962?vs=14091&id=14240

REVISION DETAIL
  https://phab.mercurial-scm.org/D5962

AFFECTED FILES
  tests/test-copies.t

CHANGE DETAILS

diff --git a/tests/test-copies.t b/tests/test-copies.t
--- a/tests/test-copies.t
+++ b/tests/test-copies.t
@@ -1,6 +1,8 @@
 #testcases filelog compatibility
 
   $ cat >> $HGRCPATH << EOF
+  > [extensions]
+  > rebase=
   > [alias]
   > l = log -G -T '{rev} {desc}\n{files}\n'
   > EOF
@@ -597,3 +599,108 @@
      +baba
   
 
+Test which demonstrate that fullcopytracing algorithm can fail to handle a case when both the csets are dirty
+----------------------------------------------------------------------------------------------------------
+
+  $ newrepo
+  $ echo a > a
+  $ hg add a
+  $ hg ci -m "added a"
+  $ echo b > b
+  $ hg add b
+  $ hg ci -m "added b"
+
+  $ echo foobar > willconflict
+  $ hg add willconflict
+  $ hg ci -m "added willconflict"
+  $ echo c > c
+  $ hg add c
+  $ hg ci -m "added c"
+
+  $ hg log -G -T '{rev} : {node|short}   {desc} \n{phase}\n'
+  @  3 : 9a8bb7cc6814   added c
+  |  draft
+  o  2 : d2ea38baf44e   added willconflict
+  |  draft
+  o  1 : 5f6d8a4bf34a   added b
+  |  draft
+  o  0 : 9092f1db7931   added a
+     draft
+
+  $ hg up .^^
+  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
+  $ echo d > d
+  $ hg add d
+  $ hg ci -m "added d"
+  created new head
+
+  $ echo barfoo > willconflict
+  $ hg add willconflict
+  $ hg ci --amend -m "added willconflict and d"
+
+  $ hg log -G -T '{rev} : {node|short}   {desc} \n{phase}\n'
+  @  5 : 5018b1509e94   added willconflict and d
+  |  draft
+  | o  3 : 9a8bb7cc6814   added c
+  | |  draft
+  | o  2 : d2ea38baf44e   added willconflict
+  |/   draft
+  o  1 : 5f6d8a4bf34a   added b
+  |  draft
+  o  0 : 9092f1db7931   added a
+     draft
+
+  $ hg rebase -r . -d 2
+  rebasing 5:5018b1509e94 "added willconflict and d" (tip)
+  merging willconflict
+  warning: conflicts while merging willconflict! (edit, then use 'hg resolve --mark')
+  unresolved conflicts (see hg resolve, then hg rebase --continue)
+  [1]
+
+  $ hg diff
+  diff -r d2ea38baf44e d
+  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/d	Thu Jan 01 00:00:00 1970 +0000
+  @@ -0,0 +1,1 @@
+  +d
+  diff -r d2ea38baf44e willconflict
+  --- a/willconflict	Thu Jan 01 00:00:00 1970 +0000
+  +++ b/willconflict	Thu Jan 01 00:00:00 1970 +0000
+  @@ -1,1 +1,5 @@
+  +<<<<<<< dest:   d2ea38baf44e - test: added willconflict
+   foobar
+  +=======
+  +barfoo
+  +>>>>>>> source: 5018b1509e94 - test: added willconflict and d
+
+  $ echo barfoo > willconflict
+  $ hg resolve -m
+  (no more unresolved files)
+  continue: hg rebase --continue
+  $ hg rebase --continue
+  rebasing 5:5018b1509e94 "added willconflict and d" (tip)
+
+  $ hg up 3 -q
+
+  $ hg log -G --hidden -T '{rev} : {node|short}   {desc} \n{phase}\n'
+  o  6 : 99802e4f1e46   added willconflict and d
+  |  draft
+  | x  5 : 5018b1509e94   added willconflict and d
+  | |  draft
+  | | x  4 : c9241b0f2d5b   added d
+  | |/   draft
+  +---@  3 : 9a8bb7cc6814   added c
+  | |    draft
+  o |  2 : d2ea38baf44e   added willconflict
+  |/   draft
+  o  1 : 5f6d8a4bf34a   added b
+  |  draft
+  o  0 : 9092f1db7931   added a
+     draft
+
+Now if we trigger a merge between cset revision 3 and 6 using base revision 4, in this case
+both the merging csets will be dirty as no one is descendent of base revision:
+
+  $ hg graft -r 6 --base c9241b0f2d5b --hidden 2>&1 | grep "AssertionError"
+  AssertionError
+



To: khanchi97, #hg-reviewers
Cc: martinvonz, mercurial-devel


More information about the Mercurial-devel mailing list