tests/test-push-checkheads-pruned-B6.t
author spectral <spectral@google.com>
Mon, 06 Aug 2018 12:52:22 -0700
changeset 38954 5a7df82de142
parent 35393 4441705b7111
child 42893 34a46d48d24e
permissions -rw-r--r--
includematcher: separate "parents" from "dirs" A future patch will make use of this separation so that we can make more intelligent decisions about what to investigate/load when the matcher is in use. Currently, even with this patch, we typically use the 'visitdir' call to identify if we can skip some directory, something along the lines of: for f in all_items: if match.visitdir(f): <do stuff> This can be slower than we'd like if there are a lot of items; it requires N calls to match.visitdir in the best case. Commonly, especially with 'narrow', we have a situation where we do some work for the directory, possibly just loading it from disk (when using treemanifests) and then check if we should be interacting with it at all, which can be a huge slowdown in some pathological cases. Differential Revision: https://phab.mercurial-scm.org/D4129
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
32013
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     1
====================================
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     2
Testing head checking code: Case B-6
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     3
====================================
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     4
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
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
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
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
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     7
some of the new one we push.
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
     8
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
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.
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    10
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    11
Category B: simple case involving pruned changesets
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    12
TestCase 6: single changesets, pruned then superseeded (on a new changeset)
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    13
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    14
.. old-state:
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    15
..
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    16
.. * 1 changeset branch
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    17
..
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    18
.. new-state:
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    19
..
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    20
.. * old branch is rewritten onto another one,
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    21
.. * the new version is then pruned.
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    22
..
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    23
.. expected-result:
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    24
..
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    25
.. * push allowed
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    26
..
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    27
.. graph-summary:
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    28
..
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    29
..   A ø⇠⊗ A'
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    30
..     | |
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    31
..     | ◔ B
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    32
..     |/
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    33
..     ●
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    34
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    35
  $ . $TESTDIR/testlib/push-checkheads-util.sh
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    36
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    37
Test setup
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    38
----------
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    39
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    40
  $ mkdir B6
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    41
  $ cd B6
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    42
  $ setuprepos
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    43
  creating basic server and client repo
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    44
  updating to branch default
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    45
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    46
  $ cd client
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    47
  $ hg up 0
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    48
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    49
  $ mkcommit B0
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    50
  created new head
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    51
  $ mkcommit A1
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    52
  $ hg up 'desc(B0)'
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    53
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    54
  $ 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
    55
  obsoleted 1 changesets
32013
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    56
  $ hg debugobsolete --record-parents `getid "desc(A1)"`
33542
b11e8c67fb0f debugobsolete: also report the number of obsoleted changesets
Boris Feld <boris.feld@octobus.net>
parents: 33252
diff changeset
    57
  obsoleted 1 changesets
32013
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    58
  $ hg log -G --hidden
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    59
  x  ba93660aff8d (draft): A1
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    60
  |
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    61
  @  74ff5441d343 (draft): B0
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    62
  |
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    63
  | x  8aaa48160adc (draft): A0
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    64
  |/
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    65
  o  1e4be0697311 (public): root
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    66
  
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    67
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    68
Actual testing
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    69
--------------
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    70
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    71
  $ hg push
35393
4441705b7111 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents: 33542
diff changeset
    72
  pushing to $TESTTMP/B6/server
32013
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    73
  searching for changes
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    74
  adding changesets
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    75
  adding manifests
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    76
  adding file changes
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    77
  added 1 changesets with 1 changes to 1 files (+1 heads)
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    78
  2 new obsolescence markers
33252
53b3a1968aa6 obsolete: reports the number of local changeset obsoleted when unbundling
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 32013
diff changeset
    79
  obsoleted 1 changesets
32013
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    80
0cf4d6763735 obsolescence: add test for the "branch replacement" logic during push, case B6
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff changeset
    81
  $ cd ../..