comparison tests/test-checkheads-partial-C4.t @ 2249:0ecb9fba6364

checkheads: handle partial obsolescence We now properly detects situations were only parts of the remote branch is obsoleted. To do so, we process children in the branch recursively to see if they will be obsolete. The current code has some trouble when the remote branch in unknown locally, or when the prune happened on a successors that is not relevant to the push. These case will be handled later. The processing code is becoming more and more complex, a lighter approach would be to check for the obsolescence markers that are relevant to the pushed set, but I prefer to stick with the current approach until more test cases are written.
author Pierre-Yves David <pierre-yves.david@ens-lyon.org>
date Wed, 29 Mar 2017 15:48:27 +0200
parents
children 2f71f6234b06
comparison
equal deleted inserted replaced
2248:c2817eac11e5 2249:0ecb9fba6364
1 ====================================
2 Testing head checking code: Case C-4
3 ====================================
4
5 Mercurial checks for the introduction of multiple heads on push. Evolution
6 comes into play to detect if existing heads on the server are being replaced by
7 some of the new heads we push.
8
9 This test file is part of a series of tests checking this behavior.
10
11 Category C: checking case were the branch is only partially obsoleted.
12 TestCase 4: 2 changeset branch, only the base is pruned
13
14 .. old-state:
15 ..
16 .. * 2 changeset branch
17 ..
18 .. new-state:
19 ..
20 .. * old base is pruned
21 .. * 1 new unrelated branch
22 ..
23 .. expected-result:
24 ..
25 .. * push denied
26 ..
27 .. graph-summary:
28 ..
29 .. B ◔
30 .. |
31 .. A ⊗ ◔ C
32 .. |/
33 .. ○
34
35 $ . $TESTDIR/testlib/checkheads-util.sh
36
37 Test setup
38 ----------
39
40 $ setuprepos
41 creating basic server and client repo
42 updating to branch default
43 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
44 $ cd server
45 $ mkcommit B0
46 $ cd ../client
47 $ hg pull
48 pulling from $TESTTMP/server
49 searching for changes
50 adding changesets
51 adding manifests
52 adding file changes
53 added 1 changesets with 1 changes to 1 files
54 (run 'hg update' to get a working copy)
55 $ hg up 0
56 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
57 $ mkcommit C0
58 created new head
59 $ hg debugobsolete `getid "desc(A0)"`
60 $ hg log -G --hidden
61 @ 0f88766e02d6 (draft): C0
62 |
63 | o d73caddc5533 (draft): B0
64 | |
65 | x 8aaa48160adc (draft): A0
66 |/
67 o 1e4be0697311 (public): root
68
69
70 Actual testing
71 --------------
72
73 $ hg push --rev 'desc(C0)'
74 pushing to $TESTTMP/server
75 searching for changes
76 abort: push creates new remote head 0f88766e02d6!
77 (merge or see 'hg help push' for details about pushing new heads)
78 [255]