Mercurial > evolve
annotate tests/test-single-head-obsolescence-named-branch-A5.t @ 5619:5673730db8d5 stable
evolve: clean merge state when content divergence resolution has no changes
This patch backs out b723805d7fe1, which only hid the problem.
Usually mergestate is cleared (or should be cleared) when creating a new
changeset, but sometimes there are situations when there's nothing to commit.
When solving content divergence resulted in no changes and no new changesets
were created, mergestate was left untouched. That's a problem because sometimes
mergestate contains files with conflicts that were already resolved by user,
and such mergestate only applies to the current wdir parent. Since evolve has
already dealt with the current wdir parent successfully when it reached this
code, this is a good place to clean the mergestate.
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Sat, 19 Sep 2020 17:49:31 +0200 |
parents | b20d04641c0f |
children | 35e769c9604f 8cc7732a29bf |
rev | line source |
---|---|
5227
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
1 ========================================= |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
2 Testing single head enforcement: Case A-1 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
3 ========================================= |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
4 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
5 A repository is set to only accept a single head per name (typically named |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
6 branch). However, obsolete changesets can make this enforcement more |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
7 complicated, because they can be kept visible by other changeset on other |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
8 branch. |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
9 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
10 This case is part of a series of tests checking this behavior. |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
11 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
12 Category A: Involving obsolescence |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
13 TestCase 1: obsoleting a merge reveal two heads |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
14 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
15 .. old-state: |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
16 .. |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
17 .. * 3 changeset changeset on branch default (2 on their own branch + 1 merge) |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
18 .. * 1 changeset on branch Z (children of the merge) |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
19 .. |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
20 .. new-state: |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
21 .. |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
22 .. * 2 changeset changeset on branch default (merge is obsolete) each a head |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
23 .. * 1 changeset on branch Z keeping the merge visible |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
24 .. |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
25 .. expected-result: |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
26 .. |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
27 .. * 2 heads detected (because we skip the merge). |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
28 .. |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
29 .. graph-summary: |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
30 .. |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
31 .. D ● (branch Z) |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
32 .. | |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
33 .. C ● (branch Z) |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
34 .. | |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
35 .. M ⊗ |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
36 .. |\ |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
37 .. A ● ● B |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
38 .. |/ |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
39 .. ● |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
40 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
41 $ . $TESTDIR/testlib/topic_setup.sh |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
42 $ . $TESTDIR/testlib/push-checkheads-util.sh |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
43 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
44 Test setup |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
45 ---------- |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
46 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
47 $ mkdir A5 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
48 $ cd A5 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
49 $ setuprepos single-head |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
50 creating basic server and client repo |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
51 updating to branch default |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
52 2 files updated, 0 files merged, 0 files removed, 0 files unresolved |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
53 $ cd client |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
54 $ hg up 0 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
55 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
56 $ mkcommit B0 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
57 created new head |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
58 (consider using topic for lightweight branches. See 'hg help topic') |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
59 $ hg merge |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
60 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
61 (branch merge, don't forget to commit) |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
62 $ hg ci -m 'M0' |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
63 $ hg branch Z |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
64 marked working directory as branch Z |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
65 (branches are permanent and global, did you want a bookmark?) |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
66 $ mkcommit C0 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
67 $ hg push --new-branch |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
68 pushing to $TESTTMP/A5/server |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
69 searching for changes |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
70 adding changesets |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
71 adding manifests |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
72 adding file changes |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
73 added 3 changesets with 2 changes to 2 files |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
74 $ hg up 0 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
75 0 files updated, 0 files merged, 3 files removed, 0 files unresolved |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
76 $ mkcommit A1 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
77 created new head |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
78 (consider using topic for lightweight branches. See 'hg help topic') |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
79 $ mkcommit B1 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
80 $ hg debugobsolete `getid "desc(M0)"` --record-parents |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
81 1 new obsolescence markers |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
82 obsoleted 1 changesets |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
83 1 new orphan changesets |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
84 $ hg log -G --hidden |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
85 @ 262c8c798096 [default] (draft): B1 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
86 | |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
87 o f6082bc4ffef [default] (draft): A1 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
88 | |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
89 | * 61c95483cc12 [Z] (draft): C0 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
90 | | |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
91 | x 14d3d4d41d1a [default] (draft): M0 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
92 | |\ |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
93 +---o 74ff5441d343 [default] (draft): B0 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
94 | | |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
95 | o 8aaa48160adc [default] (draft): A0 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
96 |/ |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
97 o 1e4be0697311 [default] (public): root |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
98 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
99 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
100 Actual testing |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
101 -------------- |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
102 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
103 (force push to make sure we get the changeset on the remote) |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
104 |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
105 $ hg push -r 'desc("C0")' --force |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
106 pushing to $TESTTMP/A5/server |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
107 searching for changes |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
108 no changes found |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
109 transaction abort! |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
110 rollback completed |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
111 abort: rejecting multiple heads on branch "default" |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
112 (2 heads: 8aaa48160adc 74ff5441d343) |
b20d04641c0f
head-checking: ignore obsolete section when checking for single heads
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
113 [255] |