tests/test-uncommit.t
changeset 2020 143c8e4dc22d
parent 1806 9f42f819267b
child 2111 ec04eb4d2c6e
child 2289 61d073590fb7
equal deleted inserted replaced
2019:996a562b6c9f 2020:143c8e4dc22d
       
     1   $ cat >> $HGRCPATH <<EOF
       
     2   > [extensions]
       
     3   > hgext.graphlog=
       
     4   > EOF
       
     5   $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
       
     6 
       
     7   $ glog() {
       
     8   >   hg glog --template '{rev}:{node|short}@{branch}({separate("/", obsolete, phase)}) {desc|firstline}\n' "$@"
       
     9   > }
       
    10 
       
    11   $ hg init repo
       
    12   $ cd repo
       
    13 
       
    14 Cannot uncommit null changeset
       
    15 
       
    16   $ hg uncommit
       
    17   abort: cannot rewrite immutable changeset
       
    18   [255]
       
    19 
       
    20 Cannot uncommit public changeset
       
    21 
       
    22   $ echo a > a
       
    23   $ hg ci -Am adda a
       
    24   $ hg phase --public .
       
    25   $ hg uncommit
       
    26   abort: cannot rewrite immutable changeset
       
    27   [255]
       
    28   $ hg phase --force --draft .
       
    29 
       
    30 Cannot uncommit merge
       
    31 
       
    32   $ hg up -q null
       
    33   $ echo b > b
       
    34   $ echo c > c
       
    35   $ echo d > d
       
    36   $ echo f > f
       
    37   $ echo g > g
       
    38   $ echo j > j
       
    39   $ echo m > m
       
    40   $ echo n > n
       
    41   $ echo o > o
       
    42   $ hg ci -Am addmore
       
    43   adding b
       
    44   adding c
       
    45   adding d
       
    46   adding f
       
    47   adding g
       
    48   adding j
       
    49   adding m
       
    50   adding n
       
    51   adding o
       
    52   created new head
       
    53   $ hg merge
       
    54   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
    55   (branch merge, don't forget to commit)
       
    56   $ hg uncommit
       
    57   abort: cannot uncommit while merging
       
    58   [255]
       
    59   $ hg ci -m merge
       
    60   $ hg uncommit
       
    61   abort: cannot uncommit merge changeset
       
    62   [255]
       
    63 
       
    64 Prepare complicated changeset
       
    65 
       
    66   $ hg branch bar
       
    67   marked working directory as branch bar
       
    68   (branches are permanent and global, did you want a bookmark?)
       
    69   $ hg cp a aa
       
    70   $ echo b >> b
       
    71   $ hg rm c
       
    72   $ echo d >> d
       
    73   $ echo e > e
       
    74   $ hg mv f ff
       
    75   $ hg mv g h
       
    76   $ echo j >> j
       
    77   $ echo k > k
       
    78   $ echo l > l
       
    79   $ hg rm m
       
    80   $ hg rm n
       
    81   $ echo o >> o
       
    82   $ hg ci -Am touncommit
       
    83   adding e
       
    84   adding k
       
    85   adding l
       
    86   $ hg st --copies --change .
       
    87   M b
       
    88   M d
       
    89   M j
       
    90   M o
       
    91   A aa
       
    92     a
       
    93   A e
       
    94   A ff
       
    95     f
       
    96   A h
       
    97     g
       
    98   A k
       
    99   A l
       
   100   R c
       
   101   R f
       
   102   R g
       
   103   R m
       
   104   R n
       
   105   $ hg man -r .
       
   106   a
       
   107   aa
       
   108   b
       
   109   d
       
   110   e
       
   111   ff
       
   112   h
       
   113   j
       
   114   k
       
   115   l
       
   116   o
       
   117 
       
   118 Add a couple of bookmarks
       
   119 
       
   120   $ glog --hidden
       
   121   @  3:5eb72dbe0cb4@bar(draft) touncommit
       
   122   |
       
   123   o    2:f63b90038565@default(draft) merge
       
   124   |\
       
   125   | o  1:f15c744d48e8@default(draft) addmore
       
   126   |
       
   127   o  0:07f494440405@default(draft) adda
       
   128   
       
   129   $ hg bookmark -r 2 unrelated
       
   130   $ hg bookmark touncommit-bm
       
   131   $ hg bookmark --inactive touncommit-bm-inactive
       
   132   $ hg bookmarks
       
   133    * touncommit-bm             3:5eb72dbe0cb4
       
   134      touncommit-bm-inactive    3:5eb72dbe0cb4
       
   135      unrelated                 2:f63b90038565
       
   136 
       
   137 Prepare complicated working directory
       
   138 
       
   139   $ hg branch foo
       
   140   marked working directory as branch foo
       
   141   $ hg mv ff f
       
   142   $ hg mv h i
       
   143   $ hg rm j
       
   144   $ hg rm k
       
   145   $ echo l >> l
       
   146   $ echo m > m
       
   147   $ echo o > o
       
   148 
       
   149 Test uncommit without argument, should be a no-op
       
   150 
       
   151   $ hg uncommit
       
   152   abort: nothing to uncommit
       
   153   (use --all to uncommit all files)
       
   154   [255]
       
   155   $ hg bookmarks
       
   156    * touncommit-bm             3:5eb72dbe0cb4
       
   157      touncommit-bm-inactive    3:5eb72dbe0cb4
       
   158      unrelated                 2:f63b90038565
       
   159 
       
   160 Test no matches
       
   161 
       
   162   $ hg uncommit --include nothere
       
   163   abort: nothing to uncommit
       
   164   (use --all to uncommit all files)
       
   165   [255]
       
   166 
       
   167 Enjoy uncommit
       
   168 
       
   169   $ hg uncommit aa b c f ff g h j k l m o
       
   170   $ hg branch
       
   171   foo
       
   172   $ hg st --copies
       
   173   M b
       
   174   A aa
       
   175     a
       
   176   A i
       
   177     g
       
   178   A l
       
   179   R c
       
   180   R g
       
   181   R j
       
   182   R m
       
   183   $ cat aa
       
   184   a
       
   185   $ cat b
       
   186   b
       
   187   b
       
   188   $ cat l
       
   189   l
       
   190   l
       
   191   $ cat m
       
   192   m
       
   193   $ test -f c && echo 'error: c was removed!'
       
   194   [1]
       
   195   $ test -f j && echo 'error: j was removed!'
       
   196   [1]
       
   197   $ test -f k && echo 'error: k was removed!'
       
   198   [1]
       
   199   $ hg st --copies --change .
       
   200   M d
       
   201   A e
       
   202   R n
       
   203   $ hg man -r .
       
   204   a
       
   205   b
       
   206   c
       
   207   d
       
   208   e
       
   209   f
       
   210   g
       
   211   j
       
   212   m
       
   213   o
       
   214   $ hg cat -r . d
       
   215   d
       
   216   d
       
   217   $ hg cat -r . e
       
   218   e
       
   219   $ glog --hidden
       
   220   @  4:e8db4aa611f6@bar(draft) touncommit
       
   221   |
       
   222   | x  3:5eb72dbe0cb4@bar(obsolete/draft) touncommit
       
   223   |/
       
   224   o    2:f63b90038565@default(draft) merge
       
   225   |\
       
   226   | o  1:f15c744d48e8@default(draft) addmore
       
   227   |
       
   228   o  0:07f494440405@default(draft) adda
       
   229   
       
   230   $ hg bookmarks
       
   231    * touncommit-bm             4:e8db4aa611f6
       
   232      touncommit-bm-inactive    4:e8db4aa611f6
       
   233      unrelated                 2:f63b90038565
       
   234   $ hg debugobsolete
       
   235   5eb72dbe0cb409d094e3b4ae8eaa30071c1b8730 e8db4aa611f6d5706374288e6898e498f5c44098 0 (*) {'user': 'test'} (glob)
       
   236 
       
   237 Test phase is preserved, no local changes
       
   238 
       
   239   $ hg up -C 3 --hidden
       
   240   8 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   241   (leaving bookmark touncommit-bm)
       
   242   working directory parent is obsolete!
       
   243   (use 'hg evolve' to update to its successor)
       
   244   $ hg --config extensions.purge= purge
       
   245   $ hg uncommit -I 'set:added() and e'
       
   246   2 new divergent changesets
       
   247   $ hg st --copies
       
   248   A e
       
   249   $ hg st --copies --change .
       
   250   M b
       
   251   M d
       
   252   M j
       
   253   M o
       
   254   A aa
       
   255     a
       
   256   A ff
       
   257     f
       
   258   A h
       
   259     g
       
   260   A k
       
   261   A l
       
   262   R c
       
   263   R f
       
   264   R g
       
   265   R m
       
   266   R n
       
   267   $ glog --hidden
       
   268   @  5:a1d4c1ad76cc@bar(draft) touncommit
       
   269   |
       
   270   | o  4:e8db4aa611f6@bar(draft) touncommit
       
   271   |/
       
   272   | x  3:5eb72dbe0cb4@bar(obsolete/draft) touncommit
       
   273   |/
       
   274   o    2:f63b90038565@default(draft) merge
       
   275   |\
       
   276   | o  1:f15c744d48e8@default(draft) addmore
       
   277   |
       
   278   o  0:07f494440405@default(draft) adda
       
   279   
       
   280   $ hg debugobsolete
       
   281   5eb72dbe0cb409d094e3b4ae8eaa30071c1b8730 e8db4aa611f6d5706374288e6898e498f5c44098 0 (*) {'user': 'test'} (glob)
       
   282   5eb72dbe0cb409d094e3b4ae8eaa30071c1b8730 a1d4c1ad76cc7eb5e8a36ef52396da334b6d59c5 0 (*) {'user': 'test'} (glob)
       
   283 
       
   284 Test --all
       
   285 
       
   286   $ hg up -C 3 --hidden
       
   287   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   288   working directory parent is obsolete!
       
   289   (use 'hg evolve' to update to its successor)
       
   290   $ hg --config extensions.purge= purge
       
   291   $ hg uncommit --all -X e
       
   292   1 new divergent changesets
       
   293   $ hg st --copies
       
   294   M b
       
   295   M d
       
   296   M j
       
   297   M o
       
   298   A aa
       
   299     a
       
   300   A ff
       
   301     f
       
   302   A h
       
   303     g
       
   304   A k
       
   305   A l
       
   306   R c
       
   307   R f
       
   308   R g
       
   309   R m
       
   310   R n
       
   311   $ hg st --copies --change .
       
   312   A e
       
   313 
       
   314   $ hg debugobsolete
       
   315   5eb72dbe0cb409d094e3b4ae8eaa30071c1b8730 e8db4aa611f6d5706374288e6898e498f5c44098 0 (*) {'user': 'test'} (glob)
       
   316   5eb72dbe0cb409d094e3b4ae8eaa30071c1b8730 a1d4c1ad76cc7eb5e8a36ef52396da334b6d59c5 0 (*) {'user': 'test'} (glob)
       
   317   5eb72dbe0cb409d094e3b4ae8eaa30071c1b8730 c4cbebac3751269bdf12d1466deabcc78521d272 0 (*) {'user': 'test'} (glob)
       
   318 
       
   319 Display a warning if nothing left
       
   320 
       
   321   $ hg uncommit e
       
   322   new changeset is empty
       
   323   (use 'hg prune .' to remove it)
       
   324   $ hg debugobsolete
       
   325   5eb72dbe0cb409d094e3b4ae8eaa30071c1b8730 e8db4aa611f6d5706374288e6898e498f5c44098 0 (*) {'user': 'test'} (glob)
       
   326   5eb72dbe0cb409d094e3b4ae8eaa30071c1b8730 a1d4c1ad76cc7eb5e8a36ef52396da334b6d59c5 0 (*) {'user': 'test'} (glob)
       
   327   5eb72dbe0cb409d094e3b4ae8eaa30071c1b8730 c4cbebac3751269bdf12d1466deabcc78521d272 0 (*) {'user': 'test'} (glob)
       
   328   c4cbebac3751269bdf12d1466deabcc78521d272 4f1c269eab68720f54e88ce3c1dc02b2858b6b89 0 (*) {'user': 'test'} (glob)
       
   329 
       
   330 Test instability warning
       
   331 
       
   332   $ hg ci -m touncommit
       
   333   $ echo unrelated > unrelated
       
   334   $ hg ci -Am addunrelated unrelated
       
   335   $ hg previous
       
   336   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   337   [8] touncommit
       
   338   $ hg uncommit aa
       
   339   1 new unstable changesets
       
   340 
       
   341 Test uncommiting agains a different base
       
   342 
       
   343   $ hg cat b --rev .
       
   344   b
       
   345   b
       
   346   $ hg cat b --rev .^
       
   347   b
       
   348   $ hg cat b --rev 0
       
   349   b: no such file in rev 07f494440405
       
   350   [1]
       
   351   $ hg uncommit --rev . b
       
   352   abort: cannot uncommit to parent changeset
       
   353   [255]
       
   354   $ hg uncommit --rev 0 b
       
   355   $ hg cat b --rev .
       
   356   b: no such file in rev 5b27f6b17da2
       
   357   [1]
       
   358 
       
   359 Test uncommiting precursors
       
   360 
       
   361   $ hg uncommit --hidden --rev 'precursors(.)' b
       
   362   $ hg cat b --rev .
       
   363   b
       
   364   b