comparison tests/test-evolve-orphan-split.t @ 3537:8b5093f333dc

tests: add a test about evolve stabilizing orphan caused by splits There are some similar tests lying around in the test suite but they are not well arranged. I wanted the test suite to be a goto reference for all the behaviors till the time we get all of them documented.
author Pulkit Goyal <7895pulkit@gmail.com>
date Wed, 14 Mar 2018 17:20:20 +0530
parents
children bc47c09c9782
comparison
equal deleted inserted replaced
3536:8432bc989053 3537:8b5093f333dc
1 ** Testing resolution of orphans by `hg evolve` where an obsolete changeset has
2 multiple successors **
3
4 $ cat >> $HGRCPATH <<EOF
5 > [ui]
6 > interactive = True
7 > [alias]
8 > glog = log -GT "{rev}:{node|short} {desc}\n ({bookmarks}) {phase}"
9 > [extensions]
10 > rebase =
11 > EOF
12 $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
13
14 Repo Setup
15
16 $ hg init repo
17 $ cd repo
18 $ echo ".*\.orig" > .hgignore
19 $ hg add .hgignore
20 $ hg ci -m "added hgignore"
21
22 An orphan changeset with parent got splitted
23 --------------------------------------------
24
25 $ for ch in a b c; do echo foo > $ch; done;
26
27 $ hg add a b
28 $ hg ci -m "added a and b"
29 $ hg add c
30 $ hg ci -m "added c"
31
32 $ hg glog
33 @ 2:86e1ebf1ca61 added c
34 | () draft
35 o 1:d0ddb614efbd added a and b
36 | () draft
37 o 0:8fa14d15e168 added hgignore
38 () draft
39
40 $ hg split -r 1 <<EOF
41 > y
42 > y
43 > n
44 > y
45 > EOF
46 0 files updated, 0 files merged, 3 files removed, 0 files unresolved
47 adding a
48 adding b
49 diff --git a/a b/a
50 new file mode 100644
51 examine changes to 'a'? [Ynesfdaq?] y
52
53 @@ -0,0 +1,1 @@
54 +foo
55 record change 1/2 to 'a'? [Ynesfdaq?] y
56
57 diff --git a/b b/b
58 new file mode 100644
59 examine changes to 'b'? [Ynesfdaq?] n
60
61 created new head
62 Done splitting? [yN] y
63 1 new orphan changesets
64
65 $ hg glog
66 @ 4:8b179cffc81c added a and b
67 | () draft
68 o 3:bd3735d4dab0 added a and b
69 | () draft
70 | * 2:86e1ebf1ca61 added c
71 | | () draft
72 | x 1:d0ddb614efbd added a and b
73 |/ () draft
74 o 0:8fa14d15e168 added hgignore
75 () draft
76
77 $ hg evolve
78 move:[2] added c
79 atop:[4] added a and b
80 working directory is now at af13f0560b31
81
82 $ hg glog
83 @ 5:af13f0560b31 added c
84 | () draft
85 o 4:8b179cffc81c added a and b
86 | () draft
87 o 3:bd3735d4dab0 added a and b
88 | () draft
89 o 0:8fa14d15e168 added hgignore
90 () draft
91
92 When the successors does not form a linear chain and are multiple heads
93 -----------------------------------------------------------------------
94
95 $ hg fold -r .^^::. --exact -m "added a b c"
96 3 changesets folded
97 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
98
99 $ hg glog
100 @ 6:f89e4764f2ed added a b c
101 | () draft
102 o 0:8fa14d15e168 added hgignore
103 () draft
104 $ echo foo > d
105 $ hg ci -Aqm "added d"
106
107 $ hg glog
108 @ 7:d48a30875f01 added d
109 | () draft
110 o 6:f89e4764f2ed added a b c
111 | () draft
112 o 0:8fa14d15e168 added hgignore
113 () draft
114 $ hg prev
115 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
116 [6] added a b c
117 $ hg split -r . <<EOF
118 > y
119 > n
120 > y
121 > y
122 > y
123 > y
124 > y
125 > EOF
126 0 files updated, 0 files merged, 3 files removed, 0 files unresolved
127 adding a
128 adding b
129 adding c
130 diff --git a/a b/a
131 new file mode 100644
132 examine changes to 'a'? [Ynesfdaq?] y
133
134 @@ -0,0 +1,1 @@
135 +foo
136 record change 1/3 to 'a'? [Ynesfdaq?] n
137
138 diff --git a/b b/b
139 new file mode 100644
140 examine changes to 'b'? [Ynesfdaq?] y
141
142 @@ -0,0 +1,1 @@
143 +foo
144 record change 2/3 to 'b'? [Ynesfdaq?] y
145
146 diff --git a/c b/c
147 new file mode 100644
148 examine changes to 'c'? [Ynesfdaq?] y
149
150 @@ -0,0 +1,1 @@
151 +foo
152 record change 3/3 to 'c'? [Ynesfdaq?] y
153
154 created new head
155 Done splitting? [yN] y
156 1 new orphan changesets
157
158 $ hg glog
159 @ 9:c0fbf8aaf6c4 added a b c
160 | () draft
161 o 8:f2632392aefe added a b c
162 | () draft
163 | * 7:d48a30875f01 added d
164 | | () draft
165 | x 6:f89e4764f2ed added a b c
166 |/ () draft
167 o 0:8fa14d15e168 added hgignore
168 () draft
169
170 $ hg rebase -r . -d 8fa14d15e168
171 rebasing 9:c0fbf8aaf6c4 "added a b c" (tip)
172 $ hg glog
173 @ 10:7f87764e5b64 added a b c
174 | () draft
175 | o 8:f2632392aefe added a b c
176 |/ () draft
177 | * 7:d48a30875f01 added d
178 | | () draft
179 | x 6:f89e4764f2ed added a b c
180 |/ () draft
181 o 0:8fa14d15e168 added hgignore
182 () draft
183
184 $ hg evolve --dry-run
185 cannot solve split across two branches
186
187 XXX: this sounds like a good thing, maybe we should suggest using commands like
188 grab or rebase to resolve this. Moreover showing the branch heads or list of
189 successors on different branches will be good.
190
191 $ hg evolve --all
192 cannot solve split across two branches