tests/test-clone-update-order.t
author Jun Wu <quark@fb.com>
Mon, 28 Nov 2016 05:45:22 +0000
changeset 30585 51e7c83e05ee
parent 25295 701df761aa94
child 34661 eb586ed5d8ce
permissions -rw-r--r--
rebase: calculate ancestors for --base separately (issue5420) Previously, the --base option only works with a single "branch" - if there is one changeset in the "--base" revset whose branching point(s) is/are different from another changeset in the "--base" revset, "rebase" will error out with: abort: source is ancestor of destination This happens if the user has multiple draft branches, and uses "hg rebase -b 'draft()' -d master", for example. The error message looks cryptic to users who don't know the implementation detail. This patch changes the logic to calculate the common ancestor for every "base" changeset separately so we won't (incorrectly) select "source" which is an ancestor of the destination. This patch should not change the behavior where all changesets specified by "--base" have the same branching point(s). A new situation is: some of the specified changesets could be rebased, while some couldn't (because they are descendants of the destination, or they do not share a common ancestor with the destination). The current behavior is to show "nothing to rebase" and exits with 1. This patch maintains the current behavior (show "nothing to rebase") even if part of the "--base" revset could be rebased. A clearer error message may be "cannot find branching point for X", or "X is a descendant of destination". The error message issue is tracked by issue5422 separately. A test is added with all kinds of tricky cases I could think of for now.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12286
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
     1
  $ hg init
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
     2
  $ echo foo > bar
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
     3
  $ hg commit -Am default
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
     4
  adding bar
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
     5
  $ hg up -r null
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
     6
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
     7
  $ hg branch mine
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
     8
  marked working directory as branch mine
15615
41885892796e branch: warn on branching
Matt Mackall <mpm@selenic.com>
parents: 12847
diff changeset
     9
  (branches are permanent and global, did you want a bookmark?)
12286
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    10
  $ echo hello > world
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    11
  $ hg commit -Am hello
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    12
  adding world
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    13
  $ hg up -r null
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    14
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    15
  $ hg branch other
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    16
  marked working directory as branch other
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    17
  $ echo good > bye
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    18
  $ hg commit -Am other
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    19
  adding bye
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    20
  $ hg up -r mine
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    21
  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    22
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    23
  $ hg clone -U -u . .#other ../b -r 0 -r 1 -r 2 -b other
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    24
  abort: cannot specify both --noupdate and --updaterev
12316
4134686b83e1 tests: add exit codes to unified tests
Matt Mackall <mpm@selenic.com>
parents: 12286
diff changeset
    25
  [255]
10637
7ce62865d72a commands: document and test hg clone update priority
timeless <timeless@gmail.com>
parents:
diff changeset
    26
12286
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    27
  $ hg clone -U .#other ../b -r 0 -r 1 -r 2 -b other
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    28
  adding changesets
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    29
  adding manifests
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    30
  adding file changes
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    31
  added 3 changesets with 3 changes to 3 files (+2 heads)
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    32
  $ rm -rf ../b
10637
7ce62865d72a commands: document and test hg clone update priority
timeless <timeless@gmail.com>
parents:
diff changeset
    33
12286
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    34
  $ hg clone -u . .#other ../b -r 0 -r 1 -r 2 -b other
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    35
  adding changesets
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    36
  adding manifests
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    37
  adding file changes
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    38
  added 3 changesets with 3 changes to 3 files (+2 heads)
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    39
  updating to branch mine
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    40
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    41
  $ rm -rf ../b
10637
7ce62865d72a commands: document and test hg clone update priority
timeless <timeless@gmail.com>
parents:
diff changeset
    42
12286
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    43
  $ hg clone -u 0 .#other ../b -r 0 -r 1 -r 2 -b other
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    44
  adding changesets
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    45
  adding manifests
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    46
  adding file changes
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    47
  added 3 changesets with 3 changes to 3 files (+2 heads)
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    48
  updating to branch default
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    49
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    50
  $ rm -rf ../b
10637
7ce62865d72a commands: document and test hg clone update priority
timeless <timeless@gmail.com>
parents:
diff changeset
    51
12286
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    52
  $ hg clone -u 1 .#other ../b -r 0 -r 1 -r 2 -b other
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    53
  adding changesets
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    54
  adding manifests
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    55
  adding file changes
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    56
  added 3 changesets with 3 changes to 3 files (+2 heads)
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    57
  updating to branch mine
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    58
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    59
  $ rm -rf ../b
10637
7ce62865d72a commands: document and test hg clone update priority
timeless <timeless@gmail.com>
parents:
diff changeset
    60
12286
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    61
  $ hg clone -u 2 .#other ../b -r 0 -r 1 -r 2 -b other
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    62
  adding changesets
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    63
  adding manifests
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    64
  adding file changes
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    65
  added 3 changesets with 3 changes to 3 files (+2 heads)
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    66
  updating to branch other
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    67
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    68
  $ rm -rf ../b
10637
7ce62865d72a commands: document and test hg clone update priority
timeless <timeless@gmail.com>
parents:
diff changeset
    69
12286
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    70
Test -r mine ... mine is ignored:
10637
7ce62865d72a commands: document and test hg clone update priority
timeless <timeless@gmail.com>
parents:
diff changeset
    71
12286
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    72
  $ hg clone -u 2 .#other ../b -r mine -r 0 -r 1 -r 2 -b other
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    73
  adding changesets
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    74
  adding manifests
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    75
  adding file changes
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    76
  added 3 changesets with 3 changes to 3 files (+2 heads)
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    77
  updating to branch other
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    78
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    79
  $ rm -rf ../b
10637
7ce62865d72a commands: document and test hg clone update priority
timeless <timeless@gmail.com>
parents:
diff changeset
    80
12286
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    81
  $ hg clone .#other ../b -b default -b mine
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    82
  adding changesets
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    83
  adding manifests
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    84
  adding file changes
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    85
  added 3 changesets with 3 changes to 3 files (+2 heads)
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    86
  updating to branch default
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    87
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    88
  $ rm -rf ../b
10637
7ce62865d72a commands: document and test hg clone update priority
timeless <timeless@gmail.com>
parents:
diff changeset
    89
12286
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    90
  $ hg clone .#other ../b
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    91
  adding changesets
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    92
  adding manifests
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    93
  adding file changes
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    94
  added 1 changesets with 1 changes to 1 files
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    95
  updating to branch other
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    96
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    97
  $ rm -rf ../b
10637
7ce62865d72a commands: document and test hg clone update priority
timeless <timeless@gmail.com>
parents:
diff changeset
    98
12286
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
    99
  $ hg clone -U . ../c -r 1 -r 2 > /dev/null
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
   100
  $ hg clone ../c ../b
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
   101
  updating to branch other
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
   102
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
   103
  $ rm -rf ../b ../c
63352a7a8c1c tests: unify test-clone-update-order
Adrian Buehlmann <adrian@cadifra.com>
parents: 10637
diff changeset
   104