tests/test-push-checkheads-pruned-B8.t
author Boris Feld <boris.feld@octobus.net>
Tue, 16 Oct 2018 15:48:00 +0200
changeset 41798 8c42b4a3d447
parent 39480 89630d0b3e23
child 42893 34a46d48d24e
permissions -rw-r--r--
strip: introduce a soft strip option This is the first user-accessible way to use the archived phase introduced in 4.8. This implements a feature discussed during the Stockholm sprint, using the archived phase for hiding changesets. The archived phase behaves exactly as stripping: changesets are no longer visible, but pulling/unbundling them will make then reappear. The only notable difference is that unlike hard stripping, soft stripping does not affect obsmarkers. The next changeset will make use of the archived phase for history rewriting command. However, having a way to manually trigger the feature first seems a necessary step before exposing users to this phase; there is a way to un-archived changesets (unbundling), so there must be a way to archive them again. Adding a flag to strip is a good way to provide access to the feature without taking a too big risk on the final UI we want. The flag is experimental so it won't be exposed by default. Using the archived phase is faster and less traumatic for the repository than actually stripping changesets.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
32015
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     1
====================================
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     2
Testing head checking code: Case B-2
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     3
====================================
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     4
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     5
Mercurial checks for the introduction of new heads on push. Evolution comes
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     6
into play to detect if existing branches on the server are being replaced by
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     7
some of the new one we push.
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     8
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     9
This case is part of a series of tests checking this behavior.
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    10
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    11
Category B: simple case involving pruned changesets
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    12
TestCase 2: multi-changeset branch, head is pruned, rest is superceeded, through other
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    13
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    14
.. old-state:
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    15
..
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    16
.. * 2 changeset branch
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    17
..
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    18
.. new-state:
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    19
..
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    20
.. * old head is rewritten then pruned
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    21
.. * 1 new branch succeeding to the other changeset in the old branch (through another obsolete branch)
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    22
..
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    23
.. expected-result:
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    24
..
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    25
.. * push allowed
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    26
..
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    27
.. graph-summary:
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    28
..
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    29
..   B ø⇠⊗ B'
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    30
..     | | A'
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    31
..   A ø⇠ø⇠◔ A''
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    32
..     |/ /
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    33
..     | /
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    34
..     |/
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    35
..     ●
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    36
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    37
  $ . $TESTDIR/testlib/push-checkheads-util.sh
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    38
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    39
Test setup
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    40
----------
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    41
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    42
  $ mkdir B8
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    43
  $ cd B8
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    44
  $ setuprepos
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    45
  creating basic server and client repo
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    46
  updating to branch default
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    47
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    48
  $ cd server
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    49
  $ mkcommit B0
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    50
  $ cd ../client
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    51
  $ hg pull
35393
4441705b7111 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents: 34661
diff changeset
    52
  pulling from $TESTTMP/B8/server
32015
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    53
  searching for changes
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    54
  adding changesets
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    55
  adding manifests
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    56
  adding file changes
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    57
  added 1 changesets with 1 changes to 1 files
39480
89630d0b3e23 phase: report number of non-public changeset alongside the new range
Boris Feld <boris.feld@octobus.net>
parents: 35709
diff changeset
    58
  new changesets d73caddc5533 (1 drafts)
32015
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    59
  (run 'hg update' to get a working copy)
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    60
  $ hg up 0
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    61
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    62
  $ mkcommit A1
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    63
  created new head
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    64
  $ mkcommit B1
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    65
  $ hg up 0
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    66
  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    67
  $ mkcommit A2
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    68
  created new head
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    69
  $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"`
33542
b11e8c67fb0f debugobsolete: also report the number of obsoleted changesets
Boris Feld <boris.feld@octobus.net>
parents: 33252
diff changeset
    70
  obsoleted 1 changesets
35709
1a09dad8b85a evolution: report new unstable changesets
Martin von Zweigbergk <martinvonz@google.com>
parents: 35393
diff changeset
    71
  1 new orphan changesets
32015
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    72
  $ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"`
33542
b11e8c67fb0f debugobsolete: also report the number of obsoleted changesets
Boris Feld <boris.feld@octobus.net>
parents: 33252
diff changeset
    73
  obsoleted 1 changesets
32015
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    74
  $ hg debugobsolete --record-parents `getid "desc(B1)"`
33542
b11e8c67fb0f debugobsolete: also report the number of obsoleted changesets
Boris Feld <boris.feld@octobus.net>
parents: 33252
diff changeset
    75
  obsoleted 1 changesets
32015
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    76
  $ hg debugobsolete `getid "desc(A1)" ` `getid "desc(A2)"`
33542
b11e8c67fb0f debugobsolete: also report the number of obsoleted changesets
Boris Feld <boris.feld@octobus.net>
parents: 33252
diff changeset
    77
  obsoleted 1 changesets
32015
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    78
  $ hg log -G --hidden
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    79
  @  c1f8d089020f (draft): A2
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    80
  |
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    81
  | x  262c8c798096 (draft): B1
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    82
  | |
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    83
  | x  f6082bc4ffef (draft): A1
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    84
  |/
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    85
  | x  d73caddc5533 (draft): B0
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    86
  | |
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    87
  | x  8aaa48160adc (draft): A0
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    88
  |/
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    89
  o  1e4be0697311 (public): root
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    90
  
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    91
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    92
Actual testing
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    93
--------------
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    94
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    95
  $ hg push
35393
4441705b7111 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents: 34661
diff changeset
    96
  pushing to $TESTTMP/B8/server
32015
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    97
  searching for changes
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    98
  adding changesets
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    99
  adding manifests
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   100
  adding file changes
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   101
  added 1 changesets with 1 changes to 1 files (+1 heads)
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   102
  4 new obsolescence markers
33252
53b3a1968aa6 obsolete: reports the number of local changeset obsoleted when unbundling
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32015
diff changeset
   103
  obsoleted 2 changesets
32015
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   104
605c38105950 obsolescence: add test for the "branch replacement" logic during push, case B8
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
   105
  $ cd ../..