tests/test-evolve-interrupted.t
changeset 4848 535ab2609e45
child 4865 31c481934138
child 5141 591a0afd2ef3
equal deleted inserted replaced
4847:0fecff9ac36d 4848:535ab2609e45
       
     1 Quitting an evolve in the middle (via ctrl-c or something) can leave things in a
       
     2 weird intermediate state where hg thinks we're in the middle of an update
       
     3 operation (or even just leave the 'merge' directory around without actually
       
     4 indicating we're in the middle of *any* operation).
       
     5 
       
     6   $ . $TESTDIR/testlib/common.sh
       
     7 
       
     8   $ cat << EOF >> $HGRCPATH
       
     9   > [extensions]
       
    10   > rebase =
       
    11   > evolve =
       
    12   > [alias]
       
    13   > l = log -G -T'{rev} {desc}'
       
    14   > EOF
       
    15 
       
    16   $ hg init interrupted-orphan
       
    17   $ cd interrupted-orphan
       
    18 
       
    19   $ echo apricot > a
       
    20   $ hg ci -qAm apricot
       
    21 
       
    22   $ echo banana > b
       
    23   $ hg ci -qAm banana
       
    24 
       
    25 Let's go back to amend 0 and make an orphan out of 1 (and a merge conflict to
       
    26 test with)
       
    27 
       
    28   $ hg up -q 0
       
    29   $ echo blueberry > b
       
    30   $ hg l
       
    31   o  1 banana
       
    32   |
       
    33   @  0 apricot
       
    34   
       
    35   $ hg ci --amend -qAm 'apricot and blueberry'
       
    36   1 new orphan changesets
       
    37   $ hg l
       
    38   @  2 apricot and blueberry
       
    39   
       
    40   *  1 banana
       
    41   |
       
    42   x  0 apricot
       
    43   
       
    44 
       
    45   $ hg evolve --update --config hooks.precommit=false --config ui.merge=:other
       
    46   move:[1] banana
       
    47   atop:[2] apricot and blueberry
       
    48   transaction abort!
       
    49   rollback completed
       
    50   abort: precommit hook exited with status 1
       
    51   [255]
       
    52   $ hg l
       
    53   @  2 apricot and blueberry
       
    54   
       
    55   *  1 banana
       
    56   |
       
    57   x  0 apricot
       
    58   
       
    59   $ cat b
       
    60   banana
       
    61 
       
    62   $ hg status --config commands.status.verbose=True
       
    63   M b
       
    64   # The repository is in an unfinished *evolve* state.
       
    65   
       
    66   # No unresolved merge conflicts.
       
    67   
       
    68   # To continue:    hg evolve --continue
       
    69   # To abort:       hg evolve --abort
       
    70   # To stop:        hg evolve --stop
       
    71   # (also see `hg help evolve.interrupted`)
       
    72   
       
    73 
       
    74   $ ls .hg/evolvestate
       
    75   .hg/evolvestate
       
    76 
       
    77   $ cat b
       
    78   banana
       
    79 
       
    80   $ hg l
       
    81   @  2 apricot and blueberry
       
    82   
       
    83   *  1 banana
       
    84   |
       
    85   x  0 apricot
       
    86   
       
    87 
       
    88 Test various methods of handling that unfinished state
       
    89   $ hg evolve --abort
       
    90   evolve aborted
       
    91   working directory is now at e1989e4b1526
       
    92   $ ls .hg/evolvestate
       
    93   ls: cannot access '?.hg/evolvestate'?: No such file or directory (re)
       
    94   [2]
       
    95   $ cat b
       
    96   blueberry
       
    97   $ hg l
       
    98   @  2 apricot and blueberry
       
    99   
       
   100   *  1 banana
       
   101   |
       
   102   x  0 apricot
       
   103   
       
   104 
       
   105   $ hg evolve --update --config hooks.precommit=false --config ui.merge=:other
       
   106   move:[1] banana
       
   107   atop:[2] apricot and blueberry
       
   108   transaction abort!
       
   109   rollback completed
       
   110   abort: precommit hook exited with status 1
       
   111   [255]
       
   112   $ cat b
       
   113   banana
       
   114   $ hg evolve --stop
       
   115   stopped the interrupted evolve
       
   116   working directory is now at e1989e4b1526
       
   117   $ cat .hg/evolvestate
       
   118   cat: .hg/evolvestate: No such file or directory
       
   119   [1]
       
   120   $ cat b
       
   121   blueberry
       
   122   $ hg l
       
   123   @  2 apricot and blueberry
       
   124   
       
   125   *  1 banana
       
   126   |
       
   127   x  0 apricot
       
   128   
       
   129 
       
   130   $ hg evolve --update --config hooks.precommit=false --config ui.merge=:other
       
   131   move:[1] banana
       
   132   atop:[2] apricot and blueberry
       
   133   transaction abort!
       
   134   rollback completed
       
   135   abort: precommit hook exited with status 1
       
   136   [255]
       
   137   $ hg evolve --continue
       
   138   evolving 1:e0486f65907d "banana"
       
   139   working directory is now at bd5ec7dfc2af
       
   140   $ cat .hg/evolvestate
       
   141   cat: .hg/evolvestate: No such file or directory
       
   142   [1]
       
   143   $ cat b
       
   144   banana
       
   145   $ hg l
       
   146   @  3 banana
       
   147   |
       
   148   o  2 apricot and blueberry
       
   149