author | Pierre-Yves David <pierre-yves.david@octobus.net> |
Wed, 09 Aug 2017 12:52:06 +0200 | |
branch | stable |
changeset 2828 | fa2deeb5dd03 |
parent 2723 | c8ba73642143 |
child 2798 | 2280461343e5 |
child 2842 | 2b8b960a04ee |
permissions | -rw-r--r-- |
978 | 1 |
ensure that all the scenarios in the user guide work as documented |
2 |
||
3 |
basic repo |
|
4 |
$ hg init t |
|
5 |
$ cd t |
|
6 |
$ touch file1.c file2.c |
|
7 |
$ hg -q commit -A -m init |
|
8 |
||
9 |
example 1: commit creates a changeset in draft phase |
|
10 |
(this is nothing to do with evolve, but it's mentioned in the user guide) |
|
11 |
$ echo 'feature Y' >> file1.c |
|
12 |
$ hg commit -u alice -d '0 0' -m 'implement feature X' |
|
13 |
$ hg phase -r . |
|
14 |
1: draft |
|
15 |
$ hg identify -in |
|
16 |
6e725fd2be6f 1 |
|
17 |
||
18 |
example 2: unsafe amend with plain vanilla Mercurial: the original |
|
19 |
commit is stripped |
|
20 |
$ hg commit --amend -u alice -d '1 0' -m 'implement feature Y' |
|
2723
c8ba73642143
test: handle output change in 20f533a92eda
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2290
diff
changeset
|
21 |
saved backup bundle to $TESTTMP/t/.hg/strip-backup/6e725fd2be6f-42cc74d4-amend.hg (glob) |
978 | 22 |
$ hg log -r 23fe4ac6d3f1 |
23 |
abort: unknown revision '23fe4ac6d3f1'! |
|
24 |
[255] |
|
25 |
$ hg identify -in |
|
26 |
fe0ecd3bd2a4 1 |
|
27 |
||
28 |
enable evolve for safe history modification |
|
29 |
$ cat >> $HGRCPATH <<EOF |
|
30 |
> [alias] |
|
31 |
> shortlog = log --template '{rev}:{node|short} {phase} {desc|firstline}\n' |
|
32 |
> [extensions] |
|
33 |
> rebase = |
|
34 |
> EOF |
|
1806
9f42f819267b
evolve: move the extensions to 'hgext3rd'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1782
diff
changeset
|
35 |
$ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH |
978 | 36 |
|
37 |
example 3: safe amend with "hg commit --amend" (figure 2) |
|
38 |
$ echo 'tweak feature Y' >> file1.c |
|
39 |
$ hg commit --amend -u alice -d '2 0' -m 'implement feature Y' |
|
40 |
$ hg shortlog -q -r fe0ecd3bd2a4 |
|
1133
8b3b0549a4b6
test: adapt to new hidden-changeset message
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1110
diff
changeset
|
41 |
abort: hidden revision 'fe0ecd3bd2a4'! |
2290
a36a8c6a09ac
ui: change the hidden revision error message
Boris Feld <boris.feld@octobus.net>
parents:
1806
diff
changeset
|
42 |
(use --hidden to access hidden revisions; successor: 934359450037) |
978 | 43 |
[255] |
44 |
$ hg --hidden shortlog -G |
|
45 |
@ 3:934359450037 draft implement feature Y |
|
46 |
| |
|
47 |
| x 2:6c5f78d5d467 draft temporary amend commit for fe0ecd3bd2a4 |
|
48 |
| | |
|
49 |
| x 1:fe0ecd3bd2a4 draft implement feature Y |
|
50 |
|/ |
|
51 |
o 0:08c4b6f4efc8 draft init |
|
52 |
||
53 |
example 3 redux: repeat safe amend, this time with "hg amend" |
|
54 |
$ hg rollback -q |
|
55 |
$ hg amend -u alice -d '2 0' -m 'implement feature Y' |
|
56 |
$ hg --hidden shortlog -G |
|
57 |
@ 3:934359450037 draft implement feature Y |
|
58 |
| |
|
59 |
| x 2:6c5f78d5d467 draft temporary amend commit for fe0ecd3bd2a4 |
|
60 |
| | |
|
61 |
| x 1:fe0ecd3bd2a4 draft implement feature Y |
|
62 |
|/ |
|
63 |
o 0:08c4b6f4efc8 draft init |
|
64 |
||
65 |
example 4: prune at head (figure 3) |
|
66 |
$ echo 'debug hack' >> file1.c |
|
67 |
$ hg commit -m 'debug hack' |
|
68 |
$ hg prune . |
|
69 |
1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
70 |
working directory now at 934359450037 |
|
1239
8a06b32061ce
evolve: apply prune update before creating obsolescence markers
Laurent Charignon <lcharignon@fb.com>
parents:
1195
diff
changeset
|
71 |
1 changesets pruned |
978 | 72 |
$ hg parents --template '{rev}:{node|short} {desc|firstline}\n' |
73 |
3:934359450037 implement feature Y |
|
74 |
$ hg --hidden shortlog -G -r 3: |
|
75 |
x 4:a3e0ef24aaf0 draft debug hack |
|
76 |
| |
|
77 |
@ 3:934359450037 draft implement feature Y |
|
78 |
| |
|
1641
27445da063b7
tests: adapt output to the new graphlog style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1422
diff
changeset
|
79 |
~ |
978 | 80 |
|
81 |
example 5: uncommit files at head (figure 4) |
|
82 |
$ echo 'relevant' >> file1.c |
|
83 |
$ echo 'irrelevant' >> file2.c |
|
84 |
$ hg commit -u dan -d '10 0' -m 'fix bug 234' |
|
85 |
$ hg uncommit file2.c |
|
86 |
$ hg status |
|
87 |
M file2.c |
|
88 |
$ hg --hidden shortlog -G -r 'descendants(3) - 4' |
|
89 |
@ 6:c8defeecf7a4 draft fix bug 234 |
|
90 |
| |
|
91 |
| x 5:da4331967f5f draft fix bug 234 |
|
92 |
|/ |
|
93 |
o 3:934359450037 draft implement feature Y |
|
94 |
| |
|
1641
27445da063b7
tests: adapt output to the new graphlog style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1422
diff
changeset
|
95 |
~ |
978 | 96 |
$ hg parents --template '{rev}:{node|short} {desc|firstline}\n{files}\n' |
97 |
6:c8defeecf7a4 fix bug 234 |
|
98 |
file1.c |
|
99 |
$ hg revert --no-backup file2.c |
|
100 |
||
101 |
example 6: fold multiple changesets together into one (figure 5) |
|
102 |
$ echo step1 >> file1.c |
|
103 |
$ hg commit -m 'step 1' |
|
104 |
$ echo step2 >> file1.c |
|
105 |
$ hg commit -m 'step 2' |
|
106 |
$ echo step3 >> file2.c |
|
107 |
$ hg commit -m 'step 3' |
|
108 |
$ hg log --template '{rev}:{node|short} {desc|firstline}\n' -r 7:: |
|
109 |
7:05e61aab8294 step 1 |
|
110 |
8:be6d5bc8e4cc step 2 |
|
111 |
9:35f432d9f7c1 step 3 |
|
1782
a046e78c3290
fold: require --from flag for folding revisions to working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
1641
diff
changeset
|
112 |
$ hg fold -d '0 0' -m 'fix bug 64' --from -r 7:: |
978 | 113 |
3 changesets folded |
114 |
1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
115 |
$ hg --hidden shortlog -G -r 6:: |
|
116 |
@ 10:171c6a79a27b draft fix bug 64 |
|
117 |
| |
|
118 |
| x 9:35f432d9f7c1 draft step 3 |
|
119 |
| | |
|
120 |
| x 8:be6d5bc8e4cc draft step 2 |
|
121 |
| | |
|
122 |
| x 7:05e61aab8294 draft step 1 |
|
123 |
|/ |
|
124 |
o 6:c8defeecf7a4 draft fix bug 234 |
|
125 |
| |
|
1641
27445da063b7
tests: adapt output to the new graphlog style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1422
diff
changeset
|
126 |
~ |
978 | 127 |
$ hg --hidden log -q -r 'successors(7) | successors(8) | successors(9)' |
128 |
10:171c6a79a27b |
|
129 |
$ hg --hidden log -q -r 'precursors(10)' |
|
130 |
7:05e61aab8294 |
|
131 |
8:be6d5bc8e4cc |
|
132 |
9:35f432d9f7c1 |
|
133 |
$ hg diff -c 10 -U 0 |
|
134 |
diff -r c8defeecf7a4 -r 171c6a79a27b file1.c |
|
135 |
--- a/file1.c Thu Jan 01 00:00:10 1970 +0000 |
|
136 |
+++ b/file1.c Thu Jan 01 00:00:00 1970 +0000 |
|
137 |
@@ -3,0 +4,2 @@ |
|
138 |
+step1 |
|
139 |
+step2 |
|
140 |
diff -r c8defeecf7a4 -r 171c6a79a27b file2.c |
|
141 |
--- a/file2.c Thu Jan 01 00:00:10 1970 +0000 |
|
142 |
+++ b/file2.c Thu Jan 01 00:00:00 1970 +0000 |
|
143 |
@@ -0,0 +1,1 @@ |
|
144 |
+step3 |
|
145 |
||
146 |
setup for example 7: amend an older changeset |
|
147 |
$ echo 'fix fix oops fix' > file2.c |
|
148 |
$ hg commit -u bob -d '3 0' -m 'fix bug 17' |
|
149 |
$ echo 'cleanup' >> file1.c |
|
150 |
$ hg commit -u bob -d '4 0' -m 'cleanup' |
|
151 |
$ echo 'new feature' >> file1.c |
|
152 |
$ hg commit -u bob -d '5 0' -m 'feature 23' |
|
153 |
$ hg --hidden shortlog -G -r 10:: |
|
154 |
@ 13:dadcbba2d606 draft feature 23 |
|
155 |
| |
|
156 |
o 12:debd46bb29dc draft cleanup |
|
157 |
| |
|
158 |
o 11:3e1cb8f70c02 draft fix bug 17 |
|
159 |
| |
|
160 |
o 10:171c6a79a27b draft fix bug 64 |
|
161 |
| |
|
1641
27445da063b7
tests: adapt output to the new graphlog style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1422
diff
changeset
|
162 |
~ |
978 | 163 |
|
164 |
example 7: amend an older changeset (figures 6, 7) |
|
165 |
$ hg update -q 11 |
|
166 |
$ echo 'fix fix fix fix' > file2.c |
|
167 |
$ hg amend -u bob -d '6 0' |
|
168 |
2 new unstable changesets |
|
169 |
$ hg shortlog -r 'obsolete()' |
|
170 |
11:3e1cb8f70c02 draft fix bug 17 |
|
171 |
$ hg shortlog -r 'unstable()' |
|
172 |
12:debd46bb29dc draft cleanup |
|
173 |
13:dadcbba2d606 draft feature 23 |
|
174 |
$ hg --hidden shortlog -G -r 10:: |
|
175 |
@ 15:395cbeda3a06 draft fix bug 17 |
|
176 |
| |
|
177 |
| x 14:f7fab707e247 draft temporary amend commit for 3e1cb8f70c02 |
|
178 |
| | |
|
179 |
| | o 13:dadcbba2d606 draft feature 23 |
|
180 |
| | | |
|
181 |
| | o 12:debd46bb29dc draft cleanup |
|
182 |
| |/ |
|
183 |
| x 11:3e1cb8f70c02 draft fix bug 17 |
|
184 |
|/ |
|
185 |
o 10:171c6a79a27b draft fix bug 64 |
|
186 |
| |
|
1641
27445da063b7
tests: adapt output to the new graphlog style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1422
diff
changeset
|
187 |
~ |
978 | 188 |
$ hg evolve -q --all |
189 |
$ hg shortlog -G -r 10:: |
|
190 |
@ 17:91b4b0f8b5c5 draft feature 23 |
|
191 |
| |
|
192 |
o 16:fe8858bd9bc2 draft cleanup |
|
193 |
| |
|
194 |
o 15:395cbeda3a06 draft fix bug 17 |
|
195 |
| |
|
196 |
o 10:171c6a79a27b draft fix bug 64 |
|
197 |
| |
|
1641
27445da063b7
tests: adapt output to the new graphlog style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1422
diff
changeset
|
198 |
~ |
978 | 199 |
|
200 |
setup for example 8: prune an older changeset (figure 8) |
|
201 |
$ echo 'useful' >> file1.c |
|
202 |
$ hg commit -u carl -d '7 0' -m 'useful work' |
|
203 |
$ echo 'debug' >> file2.c |
|
204 |
$ hg commit -u carl -d '8 0' -m 'debug hack' |
|
205 |
$ echo 'more useful' >> file1.c |
|
206 |
$ hg commit -u carl -d '9 0' -m 'more work' |
|
207 |
$ hg shortlog -G -r 17:: |
|
208 |
@ 20:ea8fafca914b draft more work |
|
209 |
| |
|
210 |
o 19:b23d06b457a8 draft debug hack |
|
211 |
| |
|
212 |
o 18:1f33e68b18b9 draft useful work |
|
213 |
| |
|
214 |
o 17:91b4b0f8b5c5 draft feature 23 |
|
215 |
| |
|
1641
27445da063b7
tests: adapt output to the new graphlog style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1422
diff
changeset
|
216 |
~ |
978 | 217 |
|
218 |
example 8: prune an older changeset (figures 8, 9) |
|
219 |
$ hg prune 19 |
|
220 |
1 changesets pruned |
|
221 |
1 new unstable changesets |
|
222 |
$ hg --hidden shortlog -G -r 18:: |
|
223 |
@ 20:ea8fafca914b draft more work |
|
224 |
| |
|
225 |
x 19:b23d06b457a8 draft debug hack |
|
226 |
| |
|
227 |
o 18:1f33e68b18b9 draft useful work |
|
228 |
| |
|
1641
27445da063b7
tests: adapt output to the new graphlog style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1422
diff
changeset
|
229 |
~ |
1422
c868a69c29c5
evolve: distinct between '--all' and '--all --any'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1239
diff
changeset
|
230 |
$ hg evolve -q --all --any |
978 | 231 |
$ hg --hidden shortlog -G -r 18:: |
232 |
@ 21:4393e5877437 draft more work |
|
233 |
| |
|
234 |
| x 20:ea8fafca914b draft more work |
|
235 |
| | |
|
236 |
| x 19:b23d06b457a8 draft debug hack |
|
237 |
|/ |
|
238 |
o 18:1f33e68b18b9 draft useful work |
|
239 |
| |
|
1641
27445da063b7
tests: adapt output to the new graphlog style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1422
diff
changeset
|
240 |
~ |
978 | 241 |
|
242 |
example 9: uncommit files from an older changeset (discard changes) |
|
243 |
(figure 10) |
|
244 |
$ echo 'this fixes bug 53' >> file1.c |
|
245 |
$ echo 'debug hack' >> file2.c |
|
246 |
$ hg commit -u dan -d '11 0' -m 'fix bug 53' |
|
247 |
$ echo 'and this handles bug 67' >> file1.c |
|
248 |
$ hg commit -u dan -d '12 0' -m 'fix bug 67' |
|
249 |
$ hg update 22 |
|
250 |
1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
251 |
$ hg shortlog -G -r 21:: |
|
252 |
o 23:4db2428c8ae3 draft fix bug 67 |
|
253 |
| |
|
254 |
@ 22:f84357446753 draft fix bug 53 |
|
255 |
| |
|
256 |
o 21:4393e5877437 draft more work |
|
257 |
| |
|
1641
27445da063b7
tests: adapt output to the new graphlog style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1422
diff
changeset
|
258 |
~ |
978 | 259 |
$ hg uncommit file2.c |
260 |
1 new unstable changesets |
|
261 |
$ hg status |
|
262 |
M file2.c |
|
263 |
$ hg revert file2.c |
|
1422
c868a69c29c5
evolve: distinct between '--all' and '--all --any'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1239
diff
changeset
|
264 |
$ hg evolve --all --any |
978 | 265 |
move:[23] fix bug 67 |
266 |
atop:[24] fix bug 53 |
|
1099
bac4e0bc9f6a
evolve: write a status message when the working directory changes
David Soria Parra <davidsp@fb.com>
parents:
978
diff
changeset
|
267 |
working directory is now at 0d972d6888e6 |
978 | 268 |
$ hg --hidden shortlog -G -r 21:: |
269 |
@ 25:0d972d6888e6 draft fix bug 67 |
|
270 |
| |
|
271 |
o 24:71bb83d674c5 draft fix bug 53 |
|
272 |
| |
|
273 |
| x 23:4db2428c8ae3 draft fix bug 67 |
|
274 |
| | |
|
275 |
| x 22:f84357446753 draft fix bug 53 |
|
276 |
|/ |
|
277 |
o 21:4393e5877437 draft more work |
|
278 |
| |
|
1641
27445da063b7
tests: adapt output to the new graphlog style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1422
diff
changeset
|
279 |
~ |
978 | 280 |
$ rm file2.c.orig |
281 |
||
282 |
example 10: uncommit files from an older changeset (keep changes) |
|
283 |
(figures 11, 12) |
|
284 |
$ echo 'fix a bug' >> file1.c |
|
285 |
$ echo 'useful but unrelated' >> file2.c |
|
286 |
$ hg commit -u dan -d '11 0' -m 'fix a bug' |
|
287 |
$ echo 'new feature' >> file1.c |
|
288 |
$ hg commit -u dan -d '12 0' -m 'new feature' |
|
289 |
$ hg update 26 |
|
290 |
1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
291 |
$ hg --hidden shortlog -G -r 25:: |
|
292 |
o 27:fbb3c6d50427 draft new feature |
|
293 |
| |
|
294 |
@ 26:5b31a1239ab9 draft fix a bug |
|
295 |
| |
|
296 |
o 25:0d972d6888e6 draft fix bug 67 |
|
297 |
| |
|
1641
27445da063b7
tests: adapt output to the new graphlog style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1422
diff
changeset
|
298 |
~ |
978 | 299 |
$ hg uncommit file2.c |
300 |
1 new unstable changesets |
|
301 |
$ hg status |
|
302 |
M file2.c |
|
303 |
$ hg commit -m 'useful tweak' |
|
304 |
$ hg --hidden shortlog -G -r 25:: |
|
305 |
@ 29:51e0d8c0a922 draft useful tweak |
|
306 |
| |
|
307 |
o 28:2594e98553a9 draft fix a bug |
|
308 |
| |
|
309 |
| o 27:fbb3c6d50427 draft new feature |
|
310 |
| | |
|
311 |
| x 26:5b31a1239ab9 draft fix a bug |
|
312 |
|/ |
|
313 |
o 25:0d972d6888e6 draft fix bug 67 |
|
314 |
| |
|
1641
27445da063b7
tests: adapt output to the new graphlog style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1422
diff
changeset
|
315 |
~ |
1422
c868a69c29c5
evolve: distinct between '--all' and '--all --any'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1239
diff
changeset
|
316 |
$ hg evolve --all --any |
978 | 317 |
move:[27] new feature |
318 |
atop:[28] fix a bug |
|
1099
bac4e0bc9f6a
evolve: write a status message when the working directory changes
David Soria Parra <davidsp@fb.com>
parents:
978
diff
changeset
|
319 |
working directory is now at 166c1c368ab6 |
978 | 320 |
$ hg --hidden shortlog -G -r 25:: |
321 |
@ 30:166c1c368ab6 draft new feature |
|
322 |
| |
|
323 |
| o 29:51e0d8c0a922 draft useful tweak |
|
324 |
|/ |
|
325 |
o 28:2594e98553a9 draft fix a bug |
|
326 |
| |
|
327 |
| x 27:fbb3c6d50427 draft new feature |
|
328 |
| | |
|
329 |
| x 26:5b31a1239ab9 draft fix a bug |
|
330 |
|/ |
|
331 |
o 25:0d972d6888e6 draft fix bug 67 |
|
332 |
| |
|
1641
27445da063b7
tests: adapt output to the new graphlog style
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1422
diff
changeset
|
333 |
~ |