comparison tests/test-checkheads-partial-C2.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
comparison
equal deleted inserted replaced
2248:c2817eac11e5 2249:0ecb9fba6364
1 ====================================
2 Testing head checking code: Case C-2
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 2: 2 changeset branch, only the base is rewritten
13
14 .. old-state:
15 ..
16 .. * 2 changeset branch
17 ..
18 .. new-state:
19 ..
20 .. * 1 new changesets branches superceeding only the base of the old one
21 .. * The old branch is still alive (base is obsolete, head is alive)
22 ..
23 .. expected-result:
24 ..
25 .. * push denied
26 ..
27 .. graph-summary:
28 ..
29 .. B ○
30 .. |
31 .. A ø⇠◔ A'
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 A1
58 created new head
59 $ hg debugobsolete `getid "desc(A0)" ` `getid "desc(A1)"`
60 $ hg log -G --hidden
61 @ f6082bc4ffef (draft): A1
62 |
63 | o d73caddc5533 (draft): B0
64 | |
65 | x 8aaa48160adc (draft): A0
66 |/
67 o 1e4be0697311 (public): root
68
69
70
71 Actual testing
72 --------------
73
74 $ hg push --rev 'desc(A1)'
75 pushing to $TESTTMP/server
76 searching for changes
77 abort: push creates new remote head f6082bc4ffef!
78 (merge or see 'hg help push' for details about pushing new heads)
79 [255]