tests/test-unamend.t
changeset 35193 867990238dc6
child 35206 900ed9853017
equal deleted inserted replaced
35192:d4805a5e7e70 35193:867990238dc6
       
     1 Test for command `hg unamend` which lives in uncommit extension
       
     2 ===============================================================
       
     3 
       
     4   $ cat >> $HGRCPATH << EOF
       
     5   > [alias]
       
     6   > glog = log -G -T '{rev}:{node|short}  {desc}'
       
     7   > [experimental]
       
     8   > evolution = createmarkers, allowunstable
       
     9   > [extensions]
       
    10   > rebase =
       
    11   > amend =
       
    12   > uncommit =
       
    13   > EOF
       
    14 
       
    15 Repo Setup
       
    16 
       
    17   $ hg init repo
       
    18   $ cd repo
       
    19   $ for ch in {a..h}; do touch $ch; echo "foo" >> $ch; hg ci -Aqm "Added "$ch; done
       
    20 
       
    21   $ hg glog
       
    22   @  7:ec2426147f0e  Added h
       
    23   |
       
    24   o  6:87d6d6676308  Added g
       
    25   |
       
    26   o  5:825660c69f0c  Added f
       
    27   |
       
    28   o  4:aa98ab95a928  Added e
       
    29   |
       
    30   o  3:62615734edd5  Added d
       
    31   |
       
    32   o  2:28ad74487de9  Added c
       
    33   |
       
    34   o  1:29becc82797a  Added b
       
    35   |
       
    36   o  0:18d04c59bb5d  Added a
       
    37   
       
    38 Trying to unamend when there was no amend done
       
    39 
       
    40   $ hg unamend
       
    41   abort: changeset must have one predecessor, found 0 predecessors
       
    42   [255]
       
    43 
       
    44 Unamend on clean wdir and tip
       
    45 
       
    46   $ echo "bar" >> h
       
    47   $ hg amend
       
    48 
       
    49   $ hg exp
       
    50   # HG changeset patch
       
    51   # User test
       
    52   # Date 0 0
       
    53   #      Thu Jan 01 00:00:00 1970 +0000
       
    54   # Node ID c9fa1a715c1b7661c0fafb362a9f30bd75878d7d
       
    55   # Parent  87d6d66763085b629e6d7ed56778c79827273022
       
    56   Added h
       
    57   
       
    58   diff -r 87d6d6676308 -r c9fa1a715c1b h
       
    59   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
    60   +++ b/h	Thu Jan 01 00:00:00 1970 +0000
       
    61   @@ -0,0 +1,2 @@
       
    62   +foo
       
    63   +bar
       
    64 
       
    65   $ hg glog --hidden
       
    66   @  8:c9fa1a715c1b  Added h
       
    67   |
       
    68   | x  7:ec2426147f0e  Added h
       
    69   |/
       
    70   o  6:87d6d6676308  Added g
       
    71   |
       
    72   o  5:825660c69f0c  Added f
       
    73   |
       
    74   o  4:aa98ab95a928  Added e
       
    75   |
       
    76   o  3:62615734edd5  Added d
       
    77   |
       
    78   o  2:28ad74487de9  Added c
       
    79   |
       
    80   o  1:29becc82797a  Added b
       
    81   |
       
    82   o  0:18d04c59bb5d  Added a
       
    83   
       
    84   $ hg unamend
       
    85   $ hg glog --hidden
       
    86   @  9:8da14a1fd653  Added h
       
    87   |
       
    88   | x  8:c9fa1a715c1b  Added h
       
    89   |/
       
    90   | x  7:ec2426147f0e  Added h
       
    91   |/
       
    92   o  6:87d6d6676308  Added g
       
    93   |
       
    94   o  5:825660c69f0c  Added f
       
    95   |
       
    96   o  4:aa98ab95a928  Added e
       
    97   |
       
    98   o  3:62615734edd5  Added d
       
    99   |
       
   100   o  2:28ad74487de9  Added c
       
   101   |
       
   102   o  1:29becc82797a  Added b
       
   103   |
       
   104   o  0:18d04c59bb5d  Added a
       
   105   
       
   106   $ hg diff
       
   107   diff -r 8da14a1fd653 h
       
   108   --- a/h	Thu Jan 01 00:00:00 1970 +0000
       
   109   +++ b/h	Thu Jan 01 00:00:00 1970 +0000
       
   110   @@ -1,1 +1,2 @@
       
   111    foo
       
   112   +bar
       
   113 
       
   114   $ hg exp
       
   115   # HG changeset patch
       
   116   # User test
       
   117   # Date 0 0
       
   118   #      Thu Jan 01 00:00:00 1970 +0000
       
   119   # Node ID 8da14a1fd653c3f07fdad5760511c9e12652a306
       
   120   # Parent  87d6d66763085b629e6d7ed56778c79827273022
       
   121   Added h
       
   122   
       
   123   diff -r 87d6d6676308 -r 8da14a1fd653 h
       
   124   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   125   +++ b/h	Thu Jan 01 00:00:00 1970 +0000
       
   126   @@ -0,0 +1,1 @@
       
   127   +foo
       
   128 
       
   129   $ hg status
       
   130   M h
       
   131 
       
   132   $ hg log -r . -T '{extras % "{extra}\n"}' --config alias.log=log
       
   133   branch=default
       
   134   unamend_source=\xc9\xfa\x1aq\\\x1bva\xc0\xfa\xfb6*\x9f0\xbdu\x87\x8d}
       
   135 
       
   136 Using unamend to undo an unamed (intentional)
       
   137 
       
   138   $ hg unamend
       
   139   $ hg exp
       
   140   # HG changeset patch
       
   141   # User test
       
   142   # Date 0 0
       
   143   #      Thu Jan 01 00:00:00 1970 +0000
       
   144   # Node ID 1c09887216571a9755fc9d2e7f0e41c2b49e341b
       
   145   # Parent  87d6d66763085b629e6d7ed56778c79827273022
       
   146   Added h
       
   147   
       
   148   diff -r 87d6d6676308 -r 1c0988721657 h
       
   149   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   150   +++ b/h	Thu Jan 01 00:00:00 1970 +0000
       
   151   @@ -0,0 +1,2 @@
       
   152   +foo
       
   153   +bar
       
   154   $ hg diff
       
   155 
       
   156 Unamend on a dirty working directory
       
   157 
       
   158   $ echo "bar" >> a
       
   159   $ hg amend
       
   160   $ echo "foobar" >> a
       
   161   $ echo "bar" >> b
       
   162   $ hg status
       
   163   M a
       
   164   M b
       
   165 
       
   166   $ hg unamend
       
   167 
       
   168   $ hg status
       
   169   M a
       
   170   M b
       
   171 
       
   172   $ hg diff
       
   173   diff -r 956548224719 a
       
   174   --- a/a	Thu Jan 01 00:00:00 1970 +0000
       
   175   +++ b/a	Thu Jan 01 00:00:00 1970 +0000
       
   176   @@ -1,1 +1,3 @@
       
   177    foo
       
   178   +bar
       
   179   +foobar
       
   180   diff -r 956548224719 b
       
   181   --- a/b	Thu Jan 01 00:00:00 1970 +0000
       
   182   +++ b/b	Thu Jan 01 00:00:00 1970 +0000
       
   183   @@ -1,1 +1,2 @@
       
   184    foo
       
   185   +bar
       
   186 
       
   187 Unamending an added file
       
   188 
       
   189   $ hg ci -m "Added things to a and b"
       
   190   $ echo foo > bar
       
   191   $ hg add bar
       
   192   $ hg amend
       
   193 
       
   194   $ hg unamend
       
   195   $ hg status
       
   196   A bar
       
   197 
       
   198   $ hg revert --all
       
   199   forgetting bar
       
   200 
       
   201 Unamending a removed file
       
   202 
       
   203   $ hg remove a
       
   204   $ hg amend
       
   205 
       
   206   $ hg unamend
       
   207   $ hg status
       
   208   R a
       
   209   ? bar
       
   210 
       
   211   $ hg revert --all
       
   212   undeleting a
       
   213 
       
   214 Unamending an added file with dirty wdir status
       
   215 
       
   216   $ hg add bar
       
   217   $ hg amend
       
   218   $ echo bar >> bar
       
   219   $ hg status
       
   220   M bar
       
   221 
       
   222   $ hg unamend
       
   223   $ hg status
       
   224   A bar
       
   225   $ hg diff
       
   226   diff -r ff917aa01c86 bar
       
   227   --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
       
   228   +++ b/bar	Thu Jan 01 00:00:00 1970 +0000
       
   229   @@ -0,0 +1,2 @@
       
   230   +foo
       
   231   +bar
       
   232 
       
   233   $ hg revert --all
       
   234   forgetting bar
       
   235 
       
   236 Unamending in middle of a stack
       
   237 
       
   238   $ hg glog
       
   239   @  19:ff917aa01c86  Added things to a and b
       
   240   |
       
   241   o  12:956548224719  Added h
       
   242   |
       
   243   o  6:87d6d6676308  Added g
       
   244   |
       
   245   o  5:825660c69f0c  Added f
       
   246   |
       
   247   o  4:aa98ab95a928  Added e
       
   248   |
       
   249   o  3:62615734edd5  Added d
       
   250   |
       
   251   o  2:28ad74487de9  Added c
       
   252   |
       
   253   o  1:29becc82797a  Added b
       
   254   |
       
   255   o  0:18d04c59bb5d  Added a
       
   256   
       
   257   $ hg up 5
       
   258   2 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   259   $ echo bar >> f
       
   260   $ hg amend
       
   261   $ hg rebase -s 6 -d . -q
       
   262 
       
   263   $ hg glog
       
   264   o  23:2b41b42e192a  Added things to a and b
       
   265   |
       
   266   o  22:1860df151f01  Added h
       
   267   |
       
   268   o  21:49635b68477e  Added g
       
   269   |
       
   270   @  20:93f0e8ffab32  Added f
       
   271   |
       
   272   o  4:aa98ab95a928  Added e
       
   273   |
       
   274   o  3:62615734edd5  Added d
       
   275   |
       
   276   o  2:28ad74487de9  Added c
       
   277   |
       
   278   o  1:29becc82797a  Added b
       
   279   |
       
   280   o  0:18d04c59bb5d  Added a
       
   281   
       
   282 
       
   283   $ hg unamend
       
   284   abort: cannot unamend a changeset with children
       
   285   [255]
       
   286 
       
   287 Trying to unamend a public changeset
       
   288 
       
   289   $ hg up
       
   290   4 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   291   $ hg phase -r . -p
       
   292   $ hg unamend
       
   293   abort: cannot unamend public changesets
       
   294   [255]
       
   295 
       
   296 Testing whether unamend retains copies or not
       
   297 
       
   298   $ hg status
       
   299   ? bar
       
   300 
       
   301   $ hg mv a foo
       
   302 
       
   303   $ hg ci -m "Moved a to foo"
       
   304   $ hg exp --git
       
   305   # HG changeset patch
       
   306   # User test
       
   307   # Date 0 0
       
   308   #      Thu Jan 01 00:00:00 1970 +0000
       
   309   # Node ID b087c66cada118d6c5487d3d7cb29cac239bd98a
       
   310   # Parent  2b41b42e192adc425b106643c3fc89170d6b8add
       
   311   Moved a to foo
       
   312   
       
   313   diff --git a/a b/foo
       
   314   rename from a
       
   315   rename to foo
       
   316 
       
   317   $ hg mv b foobar
       
   318   $ hg diff --git
       
   319   diff --git a/b b/foobar
       
   320   rename from b
       
   321   rename to foobar
       
   322   $ hg amend
       
   323 
       
   324   $ hg exp --git
       
   325   # HG changeset patch
       
   326   # User test
       
   327   # Date 0 0
       
   328   #      Thu Jan 01 00:00:00 1970 +0000
       
   329   # Node ID 9fa06fb09a83a86ec7368d15004dbc52ac1a5d2e
       
   330   # Parent  2b41b42e192adc425b106643c3fc89170d6b8add
       
   331   Moved a to foo
       
   332   
       
   333   diff --git a/a b/foo
       
   334   rename from a
       
   335   rename to foo
       
   336   diff --git a/b b/foobar
       
   337   rename from b
       
   338   rename to foobar
       
   339 
       
   340   $ hg mv c wat
       
   341   $ hg unamend
       
   342 
       
   343 Retained copies in new prdecessor commit
       
   344 
       
   345   $ hg exp --git
       
   346   # HG changeset patch
       
   347   # User test
       
   348   # Date 0 0
       
   349   #      Thu Jan 01 00:00:00 1970 +0000
       
   350   # Node ID 4cf9987c9b941f615930e7c46307b4dbf35697cf
       
   351   # Parent  2b41b42e192adc425b106643c3fc89170d6b8add
       
   352   Moved a to foo
       
   353   
       
   354   diff --git a/a b/foo
       
   355   rename from a
       
   356   rename to foo
       
   357 
       
   358 Retained copies in working directoy
       
   359 
       
   360   $ hg diff --git
       
   361   diff --git a/b b/foobar
       
   362   rename from b
       
   363   rename to foobar
       
   364   diff --git a/c b/wat
       
   365   rename from c
       
   366   rename to wat