tests/test-grab.t
branchmercurial-4.8
changeset 4511 e4fc3af2d0a9
parent 4358 72f4e924f25a
parent 4510 0b86c05440e9
child 4512 7a779a288793
child 4548 d3cc1b55ad0a
equal deleted inserted replaced
4358:72f4e924f25a 4511:e4fc3af2d0a9
     1 Test for the grab command
       
     2 
       
     3   $ cat >> $HGRCPATH <<EOF
       
     4   > [alias]
       
     5   > glog = log -G -T "{rev}:{node|short} {desc}\n"
       
     6   > [extensions]
       
     7   > EOF
       
     8   $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
       
     9 
       
    10   $ mkcommit() {
       
    11   >    echo "$1" > "$1"
       
    12   >    hg add "$1"
       
    13   >    hg ci -m "add $1"
       
    14   > }
       
    15 
       
    16   $ hg init repo
       
    17   $ cd repo
       
    18   $ hg help grab
       
    19   hg pick [-r] rev
       
    20   
       
    21   aliases: grab
       
    22   
       
    23   move a commit on the top of working directory parent and updates to it.
       
    24   
       
    25   options:
       
    26   
       
    27    -r --rev REV  revision to pick
       
    28    -c --continue continue interrupted pick
       
    29    -a --abort    abort interrupted pick
       
    30   
       
    31   (some details hidden, use --verbose to show complete help)
       
    32 
       
    33   $ mkcommit a
       
    34   $ mkcommit b
       
    35   $ mkcommit c
       
    36 
       
    37   $ hg glog
       
    38   @  2:4538525df7e2 add c
       
    39   |
       
    40   o  1:7c3bad9141dc add b
       
    41   |
       
    42   o  0:1f0dee641bb7 add a
       
    43   
       
    44 
       
    45 Grabbing an ancestor
       
    46 
       
    47   $ hg pick -r 7c3bad9141dc
       
    48   abort: cannot pick an ancestor revision
       
    49   [255]
       
    50 
       
    51 Grabbing the working directory parent
       
    52 
       
    53   $ hg pick -r .
       
    54   abort: cannot pick an ancestor revision
       
    55   [255]
       
    56 
       
    57 Specifying multiple revisions to grab
       
    58 
       
    59   $ hg pick 1f0dee641bb7 -r 7c3bad9141dc
       
    60   abort: specify just one revision
       
    61   [255]
       
    62 
       
    63 Specifying no revisions to grab
       
    64 
       
    65   $ hg pick
       
    66   abort: empty revision set
       
    67   [255]
       
    68 
       
    69 Continuing without interrupted grab
       
    70 
       
    71   $ hg pick --continue
       
    72   abort: no interrupted pick state exists
       
    73   [255]
       
    74 
       
    75 Aborting without interrupted grab
       
    76 
       
    77   $ hg pick --abort
       
    78   abort: no interrupted pick state exists
       
    79   [255]
       
    80 
       
    81 Specifying both continue and revs
       
    82 
       
    83   $ hg up 1f0dee641bb7
       
    84   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
    85   $ hg pick -r 4538525df7e2 --continue
       
    86   abort: cannot specify both --continue and revision
       
    87   [255]
       
    88 
       
    89 Making new branch heads
       
    90 
       
    91   $ mkcommit x
       
    92   created new head
       
    93   $ mkcommit y
       
    94 
       
    95   $ hg glog
       
    96   @  4:d46dc301d92f add y
       
    97   |
       
    98   o  3:8e224524cd09 add x
       
    99   |
       
   100   | o  2:4538525df7e2 add c
       
   101   | |
       
   102   | o  1:7c3bad9141dc add b
       
   103   |/
       
   104   o  0:1f0dee641bb7 add a
       
   105   
       
   106 Grabbing a revision
       
   107 
       
   108   $ hg pick 7c3bad9141dc
       
   109   picking 1:7c3bad9141dc "add b"
       
   110   1 new orphan changesets
       
   111   $ hg glog
       
   112   @  5:7c15c05db6fa add b
       
   113   |
       
   114   o  4:d46dc301d92f add y
       
   115   |
       
   116   o  3:8e224524cd09 add x
       
   117   |
       
   118   | *  2:4538525df7e2 add c
       
   119   | |
       
   120   | x  1:7c3bad9141dc add b
       
   121   |/
       
   122   o  0:1f0dee641bb7 add a
       
   123   
       
   124 
       
   125 When grab does not create any changes
       
   126 
       
   127   $ hg graft -r 4538525df7e2
       
   128   grafting 2:4538525df7e2 "add c"
       
   129 
       
   130   $ hg glog
       
   131   @  6:c4636a81ebeb add c
       
   132   |
       
   133   o  5:7c15c05db6fa add b
       
   134   |
       
   135   o  4:d46dc301d92f add y
       
   136   |
       
   137   o  3:8e224524cd09 add x
       
   138   |
       
   139   | *  2:4538525df7e2 add c
       
   140   | |
       
   141   | x  1:7c3bad9141dc add b
       
   142   |/
       
   143   o  0:1f0dee641bb7 add a
       
   144   
       
   145   $ hg pick -r 4538525df7e2
       
   146   picking 2:4538525df7e2 "add c"
       
   147   note: picking 2:4538525df7e2 created no changes to commit
       
   148 
       
   149   $ hg glog
       
   150   @  6:c4636a81ebeb add c
       
   151   |
       
   152   o  5:7c15c05db6fa add b
       
   153   |
       
   154   o  4:d46dc301d92f add y
       
   155   |
       
   156   o  3:8e224524cd09 add x
       
   157   |
       
   158   o  0:1f0dee641bb7 add a
       
   159   
       
   160 interrupted grab
       
   161 
       
   162   $ hg up d46dc301d92f
       
   163   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
   164   $ echo foo > c
       
   165   $ hg ci -Aqm "foo to c"
       
   166   $ hg pick -r c4636a81ebeb
       
   167   picking 6:c4636a81ebeb "add c"
       
   168   merging c
       
   169   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
   170   unresolved merge conflicts (see hg help resolve)
       
   171   [1]
       
   172 
       
   173   $ echo foobar > c
       
   174   $ hg resolve --all --mark
       
   175   (no more unresolved files)
       
   176   continue: hg pick --continue
       
   177   $ hg pick --continue
       
   178   $ hg glog
       
   179   @  8:44e155eb95c7 add c
       
   180   |
       
   181   o  7:2ccc03d1d096 foo to c
       
   182   |
       
   183   | o  5:7c15c05db6fa add b
       
   184   |/
       
   185   o  4:d46dc301d92f add y
       
   186   |
       
   187   o  3:8e224524cd09 add x
       
   188   |
       
   189   o  0:1f0dee641bb7 add a
       
   190   
       
   191 
       
   192 When interrupted grab results in no changes to commit
       
   193 
       
   194   $ hg up d46dc301d92f
       
   195   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   196   $ echo bar > c
       
   197   $ hg add c
       
   198   $ hg ci -m "foo to c"
       
   199   created new head
       
   200 
       
   201   $ hg up 44e155eb95c7
       
   202   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
       
   203 
       
   204   $ hg pick 4e04628911f6
       
   205   picking 9:4e04628911f6 "foo to c"
       
   206   merging c
       
   207   warning: conflicts while merging c! (edit, then use 'hg resolve --mark')
       
   208   unresolved merge conflicts (see hg help resolve)
       
   209   [1]
       
   210   $ echo foobar > c
       
   211   $ hg resolve -m
       
   212   (no more unresolved files)
       
   213   continue: hg pick --continue
       
   214 
       
   215   $ hg pick --continue
       
   216   note: picking 9:4e04628911f6 created no changes to commit
       
   217 
       
   218 Testing the abort functionality of hg pick
       
   219 
       
   220   $ echo foo > b
       
   221   $ hg ci -Aqm "foo to b"
       
   222   $ hg glog -r .^::
       
   223   @  10:c437988de89f foo to b
       
   224   |
       
   225   o  8:44e155eb95c7 add c
       
   226   |
       
   227   ~
       
   228 
       
   229   $ hg pick -r 7c15c05db6fa
       
   230   picking 5:7c15c05db6fa "add b"
       
   231   merging b
       
   232   warning: conflicts while merging b! (edit, then use 'hg resolve --mark')
       
   233   unresolved merge conflicts (see hg help resolve)
       
   234   [1]
       
   235 
       
   236   $ hg pick --abort
       
   237   aborting pick, updating to c437988de89f
       
   238 
       
   239   $ hg glog
       
   240   @  10:c437988de89f foo to b
       
   241   |
       
   242   o  8:44e155eb95c7 add c
       
   243   |
       
   244   o  7:2ccc03d1d096 foo to c
       
   245   |
       
   246   | o  5:7c15c05db6fa add b
       
   247   |/
       
   248   o  4:d46dc301d92f add y
       
   249   |
       
   250   o  3:8e224524cd09 add x
       
   251   |
       
   252   o  0:1f0dee641bb7 add a
       
   253   
       
   254 
       
   255 Trying to grab a public changeset
       
   256 
       
   257   $ hg phase -r 7c15c05db6fa -p
       
   258 
       
   259   $ hg pick -r 7c15c05db6fa
       
   260   abort: cannot pick public changesets: 7c15c05db6fa
       
   261   (see 'hg help phases' for details)
       
   262   [255]
       
   263 
       
   264   $ hg glog
       
   265   @  10:c437988de89f foo to b
       
   266   |
       
   267   o  8:44e155eb95c7 add c
       
   268   |
       
   269   o  7:2ccc03d1d096 foo to c
       
   270   |
       
   271   | o  5:7c15c05db6fa add b
       
   272   |/
       
   273   o  4:d46dc301d92f add y
       
   274   |
       
   275   o  3:8e224524cd09 add x
       
   276   |
       
   277   o  0:1f0dee641bb7 add a
       
   278   
       
   279 Checking phase preservation while grabbing secret changeset
       
   280 
       
   281 In case of merge conflicts
       
   282 
       
   283   $ hg phase -r 7c15c05db6fa -s -f
       
   284 
       
   285   $ hg pick -r 7c15c05db6fa
       
   286   picking 5:7c15c05db6fa "add b"
       
   287   merging b
       
   288   warning: conflicts while merging b! (edit, then use 'hg resolve --mark')
       
   289   unresolved merge conflicts (see hg help resolve)
       
   290   [1]
       
   291 
       
   292   $ echo bar > b
       
   293   $ hg resolve -m
       
   294   (no more unresolved files)
       
   295   continue: hg pick --continue
       
   296 
       
   297   $ hg pick --continue
       
   298   $ hg phase -r .
       
   299   11: secret
       
   300 
       
   301 No merge conflicts
       
   302 
       
   303   $ hg up d46dc301d92f
       
   304   0 files updated, 0 files merged, 3 files removed, 0 files unresolved
       
   305   $ echo foo > l
       
   306   $ hg add l
       
   307   $ hg ci -qm "added l" --secret
       
   308 
       
   309   $ hg phase -r .
       
   310   12: secret
       
   311 
       
   312   $ hg glog
       
   313   @  12:508d572e7053 added l
       
   314   |
       
   315   | o  11:10427de9e26e add b
       
   316   | |
       
   317   | o  10:c437988de89f foo to b
       
   318   | |
       
   319   | o  8:44e155eb95c7 add c
       
   320   | |
       
   321   | o  7:2ccc03d1d096 foo to c
       
   322   |/
       
   323   o  4:d46dc301d92f add y
       
   324   |
       
   325   o  3:8e224524cd09 add x
       
   326   |
       
   327   o  0:1f0dee641bb7 add a
       
   328   
       
   329   $ hg up 10427de9e26e
       
   330   3 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
   331 
       
   332   $ hg pick -r 508d572e7053
       
   333   picking 12:508d572e7053 "added l"
       
   334 
       
   335   $ hg phase -r .
       
   336   13: secret