tests/test-evolve-abort-contentdiv.t
branchstable
changeset 4481 d02a7c8cdee5
parent 4480 d18044dfc584
child 4482 ee7e4e05ce44
child 4490 7a5c6109ee84
equal deleted inserted replaced
4480:d18044dfc584 4481:d02a7c8cdee5
     1 Tests for the --abort flag for `hg evolve` command while content-divergence resolution
       
     2 ======================================================================================
       
     3 
       
     4 The `--abort` flag aborts the interuppted evolve by undoing all the work which
       
     5 was done during resolution i.e. stripping new changesets created, moving
       
     6 bookmarks back, moving working directory back.
       
     7 
       
     8 This test contains cases when `hg evolve` is doing content-divergence resolution.
       
     9 
       
    10 Setup
       
    11 =====
       
    12 
       
    13   $ cat >> $HGRCPATH <<EOF
       
    14   > [phases]
       
    15   > publish = False
       
    16   > [alias]
       
    17   > glog = log -GT "{rev}:{node|short} {desc}\n ({bookmarks}) {phase}"
       
    18   > [extensions]
       
    19   > EOF
       
    20   $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
       
    21 
       
    22   $ hg init abortrepo
       
    23   $ cd abortrepo
       
    24   $ echo ".*\.orig" > .hgignore
       
    25   $ hg add .hgignore
       
    26   $ hg ci -m "added hgignore"
       
    27   $ for ch in a b c d; do echo foo > $ch; hg add $ch; hg ci -qm "added "$ch; done;
       
    28 
       
    29   $ hg glog
       
    30   @  4:c41c793e0ef1 added d
       
    31   |   () draft
       
    32   o  3:ca1b80f7960a added c
       
    33   |   () draft
       
    34   o  2:b1661037fa25 added b
       
    35   |   () draft
       
    36   o  1:c7586e2a9264 added a
       
    37   |   () draft
       
    38   o  0:8fa14d15e168 added hgignore
       
    39       () draft
       
    40 
       
    41 Creating content divergence, resolution of which will lead to conflicts
       
    42 -----------------------------------------------------------------------
       
    43 
       
    44   $ echo bar > d
       
    45   $ hg amend
       
    46 
       
    47   $ hg up c41c793e0ef1 --hidden
       
    48   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
    49   updated to hidden changeset c41c793e0ef1
       
    50   (hidden revision 'c41c793e0ef1' was rewritten as: e49523854bc8)
       
    51   working directory parent is obsolete! (c41c793e0ef1)
       
    52   (use 'hg evolve' to update to its successor: e49523854bc8)
       
    53 
       
    54   $ echo foobar > d
       
    55   $ hg amend
       
    56   2 new content-divergent changesets
       
    57   $ hg glog --hidden
       
    58   @  6:9c1631e352d9 added d
       
    59   |   () draft
       
    60   | *  5:e49523854bc8 added d
       
    61   |/    () draft
       
    62   | x  4:c41c793e0ef1 added d
       
    63   |/    () draft
       
    64   o  3:ca1b80f7960a added c
       
    65   |   () draft
       
    66   o  2:b1661037fa25 added b
       
    67   |   () draft
       
    68   o  1:c7586e2a9264 added a
       
    69   |   () draft
       
    70   o  0:8fa14d15e168 added hgignore
       
    71       () draft
       
    72 
       
    73   $ hg evolve --content-divergent
       
    74   merge:[6] added d
       
    75   with: [5] added d
       
    76   base: [4] added d
       
    77   merging "other" content-divergent changeset 'e49523854bc8'
       
    78   merging d
       
    79   warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
       
    80   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
    81   fix conflicts and see `hg help evolve.interrupted`
       
    82   [1]
       
    83 
       
    84   $ hg status -v
       
    85   M d
       
    86   # The repository is in an unfinished *evolve* state.
       
    87   
       
    88   # Unresolved merge conflicts:
       
    89   # 
       
    90   #     d
       
    91   # 
       
    92   # To mark files as resolved:  hg resolve --mark FILE
       
    93   
       
    94   # To continue:    hg evolve --continue
       
    95   # To abort:       hg evolve --abort
       
    96   # To stop:        hg evolve --stop
       
    97   # (also see `hg help evolve.interrupted`)
       
    98   
       
    99   $ hg parents
       
   100   changeset:   6:9c1631e352d9
       
   101   tag:         tip
       
   102   parent:      3:ca1b80f7960a
       
   103   user:        test
       
   104   date:        Thu Jan 01 00:00:00 1970 +0000
       
   105   instability: content-divergent
       
   106   summary:     added d
       
   107   
       
   108   changeset:   5:e49523854bc8
       
   109   parent:      3:ca1b80f7960a
       
   110   user:        test
       
   111   date:        Thu Jan 01 00:00:00 1970 +0000
       
   112   instability: content-divergent
       
   113   summary:     added d
       
   114   
       
   115 
       
   116   $ hg evolve --abort
       
   117   evolve aborted
       
   118   working directory is now at 9c1631e352d9
       
   119 
       
   120   $ hg glog --hidden
       
   121   @  6:9c1631e352d9 added d
       
   122   |   () draft
       
   123   | *  5:e49523854bc8 added d
       
   124   |/    () draft
       
   125   | x  4:c41c793e0ef1 added d
       
   126   |/    () draft
       
   127   o  3:ca1b80f7960a added c
       
   128   |   () draft
       
   129   o  2:b1661037fa25 added b
       
   130   |   () draft
       
   131   o  1:c7586e2a9264 added a
       
   132   |   () draft
       
   133   o  0:8fa14d15e168 added hgignore
       
   134       () draft
       
   135 
       
   136 Creating multiple content-divergence where resolution of last one results in
       
   137 conflicts and resolution of first one resulted in no new commit
       
   138 -----------------------------------------------------------------------------
       
   139 
       
   140   $ echo watbar > d
       
   141   $ hg amend
       
   142   $ hg up .^
       
   143   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   144   $ echo bar > c
       
   145   $ hg amend
       
   146   2 new orphan changesets
       
   147   $ hg up ca1b80f7960a --hidden
       
   148   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   149   working directory parent is obsolete! (ca1b80f7960a)
       
   150   (use 'hg evolve' to update to its successor: 2ba73e31f264)
       
   151   $ echo foobar > c
       
   152   $ hg amend
       
   153   2 new content-divergent changesets
       
   154   $ echo bar > c
       
   155   $ hg amend
       
   156 
       
   157   $ hg glog --hidden
       
   158   @  10:491e10505bae added c
       
   159   |   () draft
       
   160   | x  9:7398f702a162 added c
       
   161   |/    () draft
       
   162   | *  8:2ba73e31f264 added c
       
   163   |/    () draft
       
   164   | *  7:f0f1694f123e added d
       
   165   | |   () draft
       
   166   | | x  6:9c1631e352d9 added d
       
   167   | |/    () draft
       
   168   | | *  5:e49523854bc8 added d
       
   169   | |/    () draft
       
   170   | | x  4:c41c793e0ef1 added d
       
   171   | |/    () draft
       
   172   | x  3:ca1b80f7960a added c
       
   173   |/    () draft
       
   174   o  2:b1661037fa25 added b
       
   175   |   () draft
       
   176   o  1:c7586e2a9264 added a
       
   177   |   () draft
       
   178   o  0:8fa14d15e168 added hgignore
       
   179       () draft
       
   180 
       
   181   $ hg evolve --all --content-divergent
       
   182   merge:[8] added c
       
   183   with: [10] added c
       
   184   base: [3] added c
       
   185   updating to "local" side of the conflict: 2ba73e31f264
       
   186   merging "other" content-divergent changeset '491e10505bae'
       
   187   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   188   merge:[5] added d
       
   189   with: [7] added d
       
   190   base: [4] added d
       
   191   updating to "local" side of the conflict: e49523854bc8
       
   192   merging "other" content-divergent changeset 'f0f1694f123e'
       
   193   merging d
       
   194   warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
       
   195   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
   196   fix conflicts and see `hg help evolve.interrupted`
       
   197   [1]
       
   198 
       
   199   $ hg evolve --abort
       
   200   2 new content-divergent changesets
       
   201   evolve aborted
       
   202   working directory is now at 491e10505bae
       
   203 
       
   204   $ hg glog --hidden
       
   205   @  10:491e10505bae added c
       
   206   |   () draft
       
   207   | x  9:7398f702a162 added c
       
   208   |/    () draft
       
   209   | *  8:2ba73e31f264 added c
       
   210   |/    () draft
       
   211   | *  7:f0f1694f123e added d
       
   212   | |   () draft
       
   213   | | x  6:9c1631e352d9 added d
       
   214   | |/    () draft
       
   215   | | *  5:e49523854bc8 added d
       
   216   | |/    () draft
       
   217   | | x  4:c41c793e0ef1 added d
       
   218   | |/    () draft
       
   219   | x  3:ca1b80f7960a added c
       
   220   |/    () draft
       
   221   o  2:b1661037fa25 added b
       
   222   |   () draft
       
   223   o  1:c7586e2a9264 added a
       
   224   |   () draft
       
   225   o  0:8fa14d15e168 added hgignore
       
   226       () draft
       
   227 
       
   228   $ hg obslog -r . --all
       
   229   *  2ba73e31f264 (8) added c
       
   230   |
       
   231   | @  491e10505bae (10) added c
       
   232   | |
       
   233   | x  7398f702a162 (9) added c
       
   234   |/     rewritten(content) as 491e10505bae using amend by test (Thu Jan 01 00:00:00 1970 +0000)
       
   235   |
       
   236   x  ca1b80f7960a (3) added c
       
   237        rewritten(content) as 2ba73e31f264 using amend by test (Thu Jan 01 00:00:00 1970 +0000)
       
   238        rewritten(content) as 7398f702a162 using amend by test (Thu Jan 01 00:00:00 1970 +0000)
       
   239   
       
   240   $ cd ..
       
   241 
       
   242 Creating content-divergence on multiple parents when gca of divergent changesets
       
   243 is parent of one of the divergents and relocating leads to conflicts
       
   244 ---------------------------------------------------------------------------------
       
   245 
       
   246   $ hg init multiparent
       
   247   $ cd multiparent
       
   248   $ echo ".*\.orig" > .hgignore
       
   249   $ hg add .hgignore
       
   250   $ hg ci -m "added hgignore"
       
   251   $ for ch in a b c d; do echo foo > $ch; hg add $ch; hg ci -qm "added "$ch; done;
       
   252 
       
   253   $ hg glog
       
   254   @  4:c41c793e0ef1 added d
       
   255   |   () draft
       
   256   o  3:ca1b80f7960a added c
       
   257   |   () draft
       
   258   o  2:b1661037fa25 added b
       
   259   |   () draft
       
   260   o  1:c7586e2a9264 added a
       
   261   |   () draft
       
   262   o  0:8fa14d15e168 added hgignore
       
   263       () draft
       
   264 
       
   265   $ hg rebase -r . -d .^^^ --config extensions.rebase=
       
   266   rebasing 4:c41c793e0ef1 "added d" (tip)
       
   267   $ echo bar > c
       
   268   $ hg add c
       
   269   $ hg amend
       
   270 
       
   271   $ hg up --hidden c41c793e0ef1
       
   272   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   273   updated to hidden changeset c41c793e0ef1
       
   274   (hidden revision 'c41c793e0ef1' was rewritten as: 69bdd23a9b0d)
       
   275   working directory parent is obsolete! (c41c793e0ef1)
       
   276   (use 'hg evolve' to update to its successor: 69bdd23a9b0d)
       
   277   $ echo bar > d
       
   278   $ hg amend
       
   279   2 new content-divergent changesets
       
   280 
       
   281   $ hg glog
       
   282   @  7:e49523854bc8 added d
       
   283   |   () draft
       
   284   | *  6:69bdd23a9b0d added d
       
   285   | |   () draft
       
   286   o |  3:ca1b80f7960a added c
       
   287   | |   () draft
       
   288   o |  2:b1661037fa25 added b
       
   289   |/    () draft
       
   290   o  1:c7586e2a9264 added a
       
   291   |   () draft
       
   292   o  0:8fa14d15e168 added hgignore
       
   293       () draft
       
   294 
       
   295   $ hg evolve --content-divergent
       
   296   merge:[7] added d
       
   297   with: [6] added d
       
   298   base: [4] added d
       
   299   rebasing "other" content-divergent changeset 69bdd23a9b0d on ca1b80f7960a
       
   300   merging c
       
   301   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
   302   fix conflicts and see `hg help evolve.interrupted`
       
   303   [1]
       
   304 
       
   305   $ hg evolve --abort
       
   306   evolve aborted
       
   307   working directory is now at e49523854bc8
       
   308 
       
   309   $ hg glog
       
   310   @  7:e49523854bc8 added d
       
   311   |   () draft
       
   312   | *  6:69bdd23a9b0d added d
       
   313   | |   () draft
       
   314   o |  3:ca1b80f7960a added c
       
   315   | |   () draft
       
   316   o |  2:b1661037fa25 added b
       
   317   |/    () draft
       
   318   o  1:c7586e2a9264 added a
       
   319   |   () draft
       
   320   o  0:8fa14d15e168 added hgignore
       
   321       () draft
       
   322 
       
   323 Creating content-divergence on multiple parents when gca of divergent changesets
       
   324 is parent of one of the divergents and merging divergent leads to conflicts
       
   325 ---------------------------------------------------------------------------------
       
   326 
       
   327   $ hg up 69bdd23a9b0d
       
   328   2 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   329   $ hg rm c
       
   330   $ echo wat > d
       
   331   $ hg amend
       
   332 
       
   333   $ hg glog
       
   334   @  8:33e4442acf98 added d
       
   335   |   () draft
       
   336   | *  7:e49523854bc8 added d
       
   337   | |   () draft
       
   338   | o  3:ca1b80f7960a added c
       
   339   | |   () draft
       
   340   | o  2:b1661037fa25 added b
       
   341   |/    () draft
       
   342   o  1:c7586e2a9264 added a
       
   343   |   () draft
       
   344   o  0:8fa14d15e168 added hgignore
       
   345       () draft
       
   346 
       
   347   $ hg evolve --content-divergent
       
   348   merge:[7] added d
       
   349   with: [8] added d
       
   350   base: [4] added d
       
   351   rebasing "other" content-divergent changeset 33e4442acf98 on ca1b80f7960a
       
   352   updating to "local" side of the conflict: e49523854bc8
       
   353   merging "other" content-divergent changeset 'a663d1567f0b'
       
   354   merging d
       
   355   warning: conflicts while merging d! (edit, then use 'hg resolve --mark')
       
   356   0 files updated, 0 files merged, 0 files removed, 1 files unresolved
       
   357   fix conflicts and see `hg help evolve.interrupted`
       
   358   [1]
       
   359 
       
   360   $ hg evolve --abort
       
   361   evolve aborted
       
   362   working directory is now at 33e4442acf98
       
   363 
       
   364   $ hg glog
       
   365   @  8:33e4442acf98 added d
       
   366   |   () draft
       
   367   | *  7:e49523854bc8 added d
       
   368   | |   () draft
       
   369   | o  3:ca1b80f7960a added c
       
   370   | |   () draft
       
   371   | o  2:b1661037fa25 added b
       
   372   |/    () draft
       
   373   o  1:c7586e2a9264 added a
       
   374   |   () draft
       
   375   o  0:8fa14d15e168 added hgignore
       
   376       () draft