##// END OF EJS Templates
tests: make log style a little easier to read in test-copytrace-heuristics.t...
Martin von Zweigbergk -
r42362:802ae977 default
parent child Browse files
Show More
@@ -1,721 +1,721 b''
1 Test for the heuristic copytracing algorithm
1 Test for the heuristic copytracing algorithm
2 ============================================
2 ============================================
3
3
4 $ cat >> $TESTTMP/copytrace.sh << '__EOF__'
4 $ cat >> $TESTTMP/copytrace.sh << '__EOF__'
5 > initclient() {
5 > initclient() {
6 > cat >> $1/.hg/hgrc <<EOF
6 > cat >> $1/.hg/hgrc <<EOF
7 > [experimental]
7 > [experimental]
8 > copytrace = heuristics
8 > copytrace = heuristics
9 > copytrace.sourcecommitlimit = -1
9 > copytrace.sourcecommitlimit = -1
10 > EOF
10 > EOF
11 > }
11 > }
12 > __EOF__
12 > __EOF__
13 $ . "$TESTTMP/copytrace.sh"
13 $ . "$TESTTMP/copytrace.sh"
14
14
15 $ cat >> $HGRCPATH << EOF
15 $ cat >> $HGRCPATH << EOF
16 > [extensions]
16 > [extensions]
17 > rebase=
17 > rebase=
18 > shelve=
18 > shelve=
19 > [alias]
19 > [alias]
20 > l = log -G -T 'changeset: {node}\n desc: {desc}\n'
20 > l = log -G -T 'rev: {rev}\ndesc: {desc}\n'
21 > pl = log -G -T 'changeset: {node}\n desc: {desc}, phase: {phase}\n'
21 > pl = log -G -T 'rev: {rev}, phase: {phase}\ndesc: {desc}\n'
22 > EOF
22 > EOF
23
23
24 NOTE: calling initclient() set copytrace.sourcecommitlimit=-1 as we want to
24 NOTE: calling initclient() set copytrace.sourcecommitlimit=-1 as we want to
25 prevent the full copytrace algorithm to run and test the heuristic algorithm
25 prevent the full copytrace algorithm to run and test the heuristic algorithm
26 without complexing the test cases with public and draft commits.
26 without complexing the test cases with public and draft commits.
27
27
28 Check filename heuristics (same dirname and same basename)
28 Check filename heuristics (same dirname and same basename)
29 ----------------------------------------------------------
29 ----------------------------------------------------------
30
30
31 $ hg init repo
31 $ hg init repo
32 $ initclient repo
32 $ initclient repo
33 $ cd repo
33 $ cd repo
34 $ echo a > a
34 $ echo a > a
35 $ mkdir dir
35 $ mkdir dir
36 $ echo a > dir/file.txt
36 $ echo a > dir/file.txt
37 $ hg addremove
37 $ hg addremove
38 adding a
38 adding a
39 adding dir/file.txt
39 adding dir/file.txt
40 $ hg ci -m initial
40 $ hg ci -m initial
41 $ hg mv a b
41 $ hg mv a b
42 $ hg mv -q dir dir2
42 $ hg mv -q dir dir2
43 $ hg ci -m 'mv a b, mv dir/ dir2/'
43 $ hg ci -m 'mv a b, mv dir/ dir2/'
44 $ hg up -q 0
44 $ hg up -q 0
45 $ echo b > a
45 $ echo b > a
46 $ echo b > dir/file.txt
46 $ echo b > dir/file.txt
47 $ hg ci -qm 'mod a, mod dir/file.txt'
47 $ hg ci -qm 'mod a, mod dir/file.txt'
48
48
49 $ hg l
49 $ hg l
50 @ changeset: 557f403c0afd2a3cf15d7e2fb1f1001a8b85e081
50 @ rev: 2
51 | desc: mod a, mod dir/file.txt
51 | desc: mod a, mod dir/file.txt
52 | o changeset: 928d74bc9110681920854d845c06959f6dfc9547
52 | o rev: 1
53 |/ desc: mv a b, mv dir/ dir2/
53 |/ desc: mv a b, mv dir/ dir2/
54 o changeset: 3c482b16e54596fed340d05ffaf155f156cda7ee
54 o rev: 0
55 desc: initial
55 desc: initial
56
56
57 $ hg rebase -s . -d 1
57 $ hg rebase -s . -d 1
58 rebasing 2:557f403c0afd "mod a, mod dir/file.txt" (tip)
58 rebasing 2:557f403c0afd "mod a, mod dir/file.txt" (tip)
59 merging b and a to b
59 merging b and a to b
60 merging dir2/file.txt and dir/file.txt to dir2/file.txt
60 merging dir2/file.txt and dir/file.txt to dir2/file.txt
61 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/557f403c0afd-9926eeff-rebase.hg
61 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/557f403c0afd-9926eeff-rebase.hg
62 $ cd ..
62 $ cd ..
63 $ rm -rf repo
63 $ rm -rf repo
64
64
65 Make sure filename heuristics do not when they are not related
65 Make sure filename heuristics do not when they are not related
66 --------------------------------------------------------------
66 --------------------------------------------------------------
67
67
68 $ hg init repo
68 $ hg init repo
69 $ initclient repo
69 $ initclient repo
70 $ cd repo
70 $ cd repo
71 $ echo 'somecontent' > a
71 $ echo 'somecontent' > a
72 $ hg add a
72 $ hg add a
73 $ hg ci -m initial
73 $ hg ci -m initial
74 $ hg rm a
74 $ hg rm a
75 $ echo 'completelydifferentcontext' > b
75 $ echo 'completelydifferentcontext' > b
76 $ hg add b
76 $ hg add b
77 $ hg ci -m 'rm a, add b'
77 $ hg ci -m 'rm a, add b'
78 $ hg up -q 0
78 $ hg up -q 0
79 $ printf 'somecontent\nmoarcontent' > a
79 $ printf 'somecontent\nmoarcontent' > a
80 $ hg ci -qm 'mode a'
80 $ hg ci -qm 'mode a'
81
81
82 $ hg l
82 $ hg l
83 @ changeset: d526312210b9e8f795d576a77dc643796384d86e
83 @ rev: 2
84 | desc: mode a
84 | desc: mode a
85 | o changeset: 46985f76c7e5e5123433527f5c8526806145650b
85 | o rev: 1
86 |/ desc: rm a, add b
86 |/ desc: rm a, add b
87 o changeset: e5b71fb099c29d9172ef4a23485aaffd497e4cc0
87 o rev: 0
88 desc: initial
88 desc: initial
89
89
90 $ hg rebase -s . -d 1
90 $ hg rebase -s . -d 1
91 rebasing 2:d526312210b9 "mode a" (tip)
91 rebasing 2:d526312210b9 "mode a" (tip)
92 file 'a' was deleted in local [dest] but was modified in other [source].
92 file 'a' was deleted in local [dest] but was modified in other [source].
93 What do you want to do?
93 What do you want to do?
94 use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
94 use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
95 unresolved conflicts (see hg resolve, then hg rebase --continue)
95 unresolved conflicts (see hg resolve, then hg rebase --continue)
96 [1]
96 [1]
97
97
98 $ cd ..
98 $ cd ..
99 $ rm -rf repo
99 $ rm -rf repo
100
100
101 Test when lca didn't modified the file that was moved
101 Test when lca didn't modified the file that was moved
102 -----------------------------------------------------
102 -----------------------------------------------------
103
103
104 $ hg init repo
104 $ hg init repo
105 $ initclient repo
105 $ initclient repo
106 $ cd repo
106 $ cd repo
107 $ echo 'somecontent' > a
107 $ echo 'somecontent' > a
108 $ hg add a
108 $ hg add a
109 $ hg ci -m initial
109 $ hg ci -m initial
110 $ echo c > c
110 $ echo c > c
111 $ hg add c
111 $ hg add c
112 $ hg ci -m randomcommit
112 $ hg ci -m randomcommit
113 $ hg mv a b
113 $ hg mv a b
114 $ hg ci -m 'mv a b'
114 $ hg ci -m 'mv a b'
115 $ hg up -q 1
115 $ hg up -q 1
116 $ echo b > a
116 $ echo b > a
117 $ hg ci -qm 'mod a'
117 $ hg ci -qm 'mod a'
118
118
119 $ hg pl
119 $ hg pl
120 @ changeset: 9d5cf99c3d9f8e8b05ba55421f7f56530cfcf3bc
120 @ rev: 3, phase: draft
121 | desc: mod a, phase: draft
121 | desc: mod a
122 | o changeset: d760186dd240fc47b91eb9f0b58b0002aaeef95d
122 | o rev: 2, phase: draft
123 |/ desc: mv a b, phase: draft
123 |/ desc: mv a b
124 o changeset: 48e1b6ba639d5d7fb313fa7989eebabf99c9eb83
124 o rev: 1, phase: draft
125 | desc: randomcommit, phase: draft
125 | desc: randomcommit
126 o changeset: e5b71fb099c29d9172ef4a23485aaffd497e4cc0
126 o rev: 0, phase: draft
127 desc: initial, phase: draft
127 desc: initial
128
128
129 $ hg rebase -s . -d 2
129 $ hg rebase -s . -d 2
130 rebasing 3:9d5cf99c3d9f "mod a" (tip)
130 rebasing 3:9d5cf99c3d9f "mod a" (tip)
131 merging b and a to b
131 merging b and a to b
132 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/9d5cf99c3d9f-f02358cc-rebase.hg
132 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/9d5cf99c3d9f-f02358cc-rebase.hg
133 $ cd ..
133 $ cd ..
134 $ rm -rf repo
134 $ rm -rf repo
135
135
136 Rebase "backwards"
136 Rebase "backwards"
137 ------------------
137 ------------------
138
138
139 $ hg init repo
139 $ hg init repo
140 $ initclient repo
140 $ initclient repo
141 $ cd repo
141 $ cd repo
142 $ echo 'somecontent' > a
142 $ echo 'somecontent' > a
143 $ hg add a
143 $ hg add a
144 $ hg ci -m initial
144 $ hg ci -m initial
145 $ echo c > c
145 $ echo c > c
146 $ hg add c
146 $ hg add c
147 $ hg ci -m randomcommit
147 $ hg ci -m randomcommit
148 $ hg mv a b
148 $ hg mv a b
149 $ hg ci -m 'mv a b'
149 $ hg ci -m 'mv a b'
150 $ hg up -q 2
150 $ hg up -q 2
151 $ echo b > b
151 $ echo b > b
152 $ hg ci -qm 'mod b'
152 $ hg ci -qm 'mod b'
153
153
154 $ hg l
154 $ hg l
155 @ changeset: fbe97126b3969056795c462a67d93faf13e4d298
155 @ rev: 3
156 | desc: mod b
156 | desc: mod b
157 o changeset: d760186dd240fc47b91eb9f0b58b0002aaeef95d
157 o rev: 2
158 | desc: mv a b
158 | desc: mv a b
159 o changeset: 48e1b6ba639d5d7fb313fa7989eebabf99c9eb83
159 o rev: 1
160 | desc: randomcommit
160 | desc: randomcommit
161 o changeset: e5b71fb099c29d9172ef4a23485aaffd497e4cc0
161 o rev: 0
162 desc: initial
162 desc: initial
163
163
164 $ hg rebase -s . -d 0
164 $ hg rebase -s . -d 0
165 rebasing 3:fbe97126b396 "mod b" (tip)
165 rebasing 3:fbe97126b396 "mod b" (tip)
166 merging a and b to a
166 merging a and b to a
167 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/fbe97126b396-cf5452a1-rebase.hg
167 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/fbe97126b396-cf5452a1-rebase.hg
168 $ cd ..
168 $ cd ..
169 $ rm -rf repo
169 $ rm -rf repo
170
170
171 Check a few potential move candidates
171 Check a few potential move candidates
172 -------------------------------------
172 -------------------------------------
173
173
174 $ hg init repo
174 $ hg init repo
175 $ initclient repo
175 $ initclient repo
176 $ cd repo
176 $ cd repo
177 $ mkdir dir
177 $ mkdir dir
178 $ echo a > dir/a
178 $ echo a > dir/a
179 $ hg add dir/a
179 $ hg add dir/a
180 $ hg ci -qm initial
180 $ hg ci -qm initial
181 $ hg mv dir/a dir/b
181 $ hg mv dir/a dir/b
182 $ hg ci -qm 'mv dir/a dir/b'
182 $ hg ci -qm 'mv dir/a dir/b'
183 $ mkdir dir2
183 $ mkdir dir2
184 $ echo b > dir2/a
184 $ echo b > dir2/a
185 $ hg add dir2/a
185 $ hg add dir2/a
186 $ hg ci -qm 'create dir2/a'
186 $ hg ci -qm 'create dir2/a'
187 $ hg up -q 0
187 $ hg up -q 0
188 $ echo b > dir/a
188 $ echo b > dir/a
189 $ hg ci -qm 'mod dir/a'
189 $ hg ci -qm 'mod dir/a'
190
190
191 $ hg l
191 $ hg l
192 @ changeset: 6b2f4cece40fd320f41229f23821256ffc08efea
192 @ rev: 3
193 | desc: mod dir/a
193 | desc: mod dir/a
194 | o changeset: 4494bf7efd2e0dfdd388e767fb913a8a3731e3fa
194 | o rev: 2
195 | | desc: create dir2/a
195 | | desc: create dir2/a
196 | o changeset: b1784dfab6ea6bfafeb11c0ac50a2981b0fe6ade
196 | o rev: 1
197 |/ desc: mv dir/a dir/b
197 |/ desc: mv dir/a dir/b
198 o changeset: 36859b8907c513a3a87ae34ba5b1e7eea8c20944
198 o rev: 0
199 desc: initial
199 desc: initial
200
200
201 $ hg rebase -s . -d 2
201 $ hg rebase -s . -d 2
202 rebasing 3:6b2f4cece40f "mod dir/a" (tip)
202 rebasing 3:6b2f4cece40f "mod dir/a" (tip)
203 merging dir/b and dir/a to dir/b
203 merging dir/b and dir/a to dir/b
204 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/6b2f4cece40f-503efe60-rebase.hg
204 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/6b2f4cece40f-503efe60-rebase.hg
205 $ cd ..
205 $ cd ..
206 $ rm -rf repo
206 $ rm -rf repo
207
207
208 Test the copytrace.movecandidateslimit with many move candidates
208 Test the copytrace.movecandidateslimit with many move candidates
209 ----------------------------------------------------------------
209 ----------------------------------------------------------------
210
210
211 $ hg init repo
211 $ hg init repo
212 $ initclient repo
212 $ initclient repo
213 $ cd repo
213 $ cd repo
214 $ echo a > a
214 $ echo a > a
215 $ hg add a
215 $ hg add a
216 $ hg ci -m initial
216 $ hg ci -m initial
217 $ hg mv a foo
217 $ hg mv a foo
218 $ echo a > b
218 $ echo a > b
219 $ echo a > c
219 $ echo a > c
220 $ echo a > d
220 $ echo a > d
221 $ echo a > e
221 $ echo a > e
222 $ echo a > f
222 $ echo a > f
223 $ echo a > g
223 $ echo a > g
224 $ hg add b
224 $ hg add b
225 $ hg add c
225 $ hg add c
226 $ hg add d
226 $ hg add d
227 $ hg add e
227 $ hg add e
228 $ hg add f
228 $ hg add f
229 $ hg add g
229 $ hg add g
230 $ hg ci -m 'mv a foo, add many files'
230 $ hg ci -m 'mv a foo, add many files'
231 $ hg up -q ".^"
231 $ hg up -q ".^"
232 $ echo b > a
232 $ echo b > a
233 $ hg ci -m 'mod a'
233 $ hg ci -m 'mod a'
234 created new head
234 created new head
235
235
236 $ hg l
236 $ hg l
237 @ changeset: ef716627c70bf4ca0bdb623cfb0d6fe5b9acc51e
237 @ rev: 2
238 | desc: mod a
238 | desc: mod a
239 | o changeset: 8329d5c6bf479ec5ca59b9864f3f45d07213f5a4
239 | o rev: 1
240 |/ desc: mv a foo, add many files
240 |/ desc: mv a foo, add many files
241 o changeset: 1451231c87572a7d3f92fc210b4b35711c949a98
241 o rev: 0
242 desc: initial
242 desc: initial
243
243
244 With small limit
244 With small limit
245
245
246 $ hg rebase -s 2 -d 1 --config experimental.copytrace.movecandidateslimit=0
246 $ hg rebase -s 2 -d 1 --config experimental.copytrace.movecandidateslimit=0
247 rebasing 2:ef716627c70b "mod a" (tip)
247 rebasing 2:ef716627c70b "mod a" (tip)
248 skipping copytracing for 'a', more candidates than the limit: 7
248 skipping copytracing for 'a', more candidates than the limit: 7
249 file 'a' was deleted in local [dest] but was modified in other [source].
249 file 'a' was deleted in local [dest] but was modified in other [source].
250 What do you want to do?
250 What do you want to do?
251 use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
251 use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
252 unresolved conflicts (see hg resolve, then hg rebase --continue)
252 unresolved conflicts (see hg resolve, then hg rebase --continue)
253 [1]
253 [1]
254
254
255 $ hg rebase --abort
255 $ hg rebase --abort
256 rebase aborted
256 rebase aborted
257
257
258 With default limit which is 100
258 With default limit which is 100
259
259
260 $ hg rebase -s 2 -d 1
260 $ hg rebase -s 2 -d 1
261 rebasing 2:ef716627c70b "mod a" (tip)
261 rebasing 2:ef716627c70b "mod a" (tip)
262 merging foo and a to foo
262 merging foo and a to foo
263 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/ef716627c70b-24681561-rebase.hg
263 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/ef716627c70b-24681561-rebase.hg
264
264
265 $ cd ..
265 $ cd ..
266 $ rm -rf repo
266 $ rm -rf repo
267
267
268 Move file in one branch and delete it in another
268 Move file in one branch and delete it in another
269 -----------------------------------------------
269 -----------------------------------------------
270
270
271 $ hg init repo
271 $ hg init repo
272 $ initclient repo
272 $ initclient repo
273 $ cd repo
273 $ cd repo
274 $ echo a > a
274 $ echo a > a
275 $ hg add a
275 $ hg add a
276 $ hg ci -m initial
276 $ hg ci -m initial
277 $ hg mv a b
277 $ hg mv a b
278 $ hg ci -m 'mv a b'
278 $ hg ci -m 'mv a b'
279 $ hg up -q ".^"
279 $ hg up -q ".^"
280 $ hg rm a
280 $ hg rm a
281 $ hg ci -m 'del a'
281 $ hg ci -m 'del a'
282 created new head
282 created new head
283
283
284 $ hg pl
284 $ hg pl
285 @ changeset: 7d61ee3b1e48577891a072024968428ba465c47b
285 @ rev: 2, phase: draft
286 | desc: del a, phase: draft
286 | desc: del a
287 | o changeset: 472e38d57782172f6c6abed82a94ca0d998c3a22
287 | o rev: 1, phase: draft
288 |/ desc: mv a b, phase: draft
288 |/ desc: mv a b
289 o changeset: 1451231c87572a7d3f92fc210b4b35711c949a98
289 o rev: 0, phase: draft
290 desc: initial, phase: draft
290 desc: initial
291
291
292 $ hg rebase -s 1 -d 2
292 $ hg rebase -s 1 -d 2
293 rebasing 1:472e38d57782 "mv a b"
293 rebasing 1:472e38d57782 "mv a b"
294 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/472e38d57782-17d50e29-rebase.hg
294 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/472e38d57782-17d50e29-rebase.hg
295 $ hg up -q c492ed3c7e35dcd1dc938053b8adf56e2cfbd062
295 $ hg up -q c492ed3c7e35dcd1dc938053b8adf56e2cfbd062
296 $ ls
296 $ ls
297 b
297 b
298 $ cd ..
298 $ cd ..
299 $ rm -rf repo
299 $ rm -rf repo
300
300
301 Move a directory in draft branch
301 Move a directory in draft branch
302 --------------------------------
302 --------------------------------
303
303
304 $ hg init repo
304 $ hg init repo
305 $ initclient repo
305 $ initclient repo
306 $ cd repo
306 $ cd repo
307 $ mkdir dir
307 $ mkdir dir
308 $ echo a > dir/a
308 $ echo a > dir/a
309 $ hg add dir/a
309 $ hg add dir/a
310 $ hg ci -qm initial
310 $ hg ci -qm initial
311 $ echo b > dir/a
311 $ echo b > dir/a
312 $ hg ci -qm 'mod dir/a'
312 $ hg ci -qm 'mod dir/a'
313 $ hg up -q ".^"
313 $ hg up -q ".^"
314 $ hg mv -q dir/ dir2
314 $ hg mv -q dir/ dir2
315 $ hg ci -qm 'mv dir/ dir2/'
315 $ hg ci -qm 'mv dir/ dir2/'
316
316
317 $ hg l
317 $ hg l
318 @ changeset: a33d80b6e352591dfd82784e1ad6cdd86b25a239
318 @ rev: 2
319 | desc: mv dir/ dir2/
319 | desc: mv dir/ dir2/
320 | o changeset: 6b2f4cece40fd320f41229f23821256ffc08efea
320 | o rev: 1
321 |/ desc: mod dir/a
321 |/ desc: mod dir/a
322 o changeset: 36859b8907c513a3a87ae34ba5b1e7eea8c20944
322 o rev: 0
323 desc: initial
323 desc: initial
324
324
325 $ hg rebase -s . -d 1
325 $ hg rebase -s . -d 1
326 rebasing 2:a33d80b6e352 "mv dir/ dir2/" (tip)
326 rebasing 2:a33d80b6e352 "mv dir/ dir2/" (tip)
327 merging dir/a and dir2/a to dir2/a
327 merging dir/a and dir2/a to dir2/a
328 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/a33d80b6e352-fecb9ada-rebase.hg
328 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/a33d80b6e352-fecb9ada-rebase.hg
329 $ cd ..
329 $ cd ..
330 $ rm -rf server
330 $ rm -rf server
331 $ rm -rf repo
331 $ rm -rf repo
332
332
333 Move file twice and rebase mod on top of moves
333 Move file twice and rebase mod on top of moves
334 ----------------------------------------------
334 ----------------------------------------------
335
335
336 $ hg init repo
336 $ hg init repo
337 $ initclient repo
337 $ initclient repo
338 $ cd repo
338 $ cd repo
339 $ echo a > a
339 $ echo a > a
340 $ hg add a
340 $ hg add a
341 $ hg ci -m initial
341 $ hg ci -m initial
342 $ hg mv a b
342 $ hg mv a b
343 $ hg ci -m 'mv a b'
343 $ hg ci -m 'mv a b'
344 $ hg mv b c
344 $ hg mv b c
345 $ hg ci -m 'mv b c'
345 $ hg ci -m 'mv b c'
346 $ hg up -q 0
346 $ hg up -q 0
347 $ echo c > a
347 $ echo c > a
348 $ hg ci -m 'mod a'
348 $ hg ci -m 'mod a'
349 created new head
349 created new head
350
350
351 $ hg l
351 $ hg l
352 @ changeset: d413169422167a3fa5275fc5d71f7dea9f5775f3
352 @ rev: 3
353 | desc: mod a
353 | desc: mod a
354 | o changeset: d3efd280421d24f9f229997c19e654761c942a71
354 | o rev: 2
355 | | desc: mv b c
355 | | desc: mv b c
356 | o changeset: 472e38d57782172f6c6abed82a94ca0d998c3a22
356 | o rev: 1
357 |/ desc: mv a b
357 |/ desc: mv a b
358 o changeset: 1451231c87572a7d3f92fc210b4b35711c949a98
358 o rev: 0
359 desc: initial
359 desc: initial
360 $ hg rebase -s . -d 2
360 $ hg rebase -s . -d 2
361 rebasing 3:d41316942216 "mod a" (tip)
361 rebasing 3:d41316942216 "mod a" (tip)
362 merging c and a to c
362 merging c and a to c
363 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/d41316942216-2b5949bc-rebase.hg
363 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/d41316942216-2b5949bc-rebase.hg
364
364
365 $ cd ..
365 $ cd ..
366 $ rm -rf repo
366 $ rm -rf repo
367
367
368 Move file twice and rebase moves on top of mods
368 Move file twice and rebase moves on top of mods
369 -----------------------------------------------
369 -----------------------------------------------
370
370
371 $ hg init repo
371 $ hg init repo
372 $ initclient repo
372 $ initclient repo
373 $ cd repo
373 $ cd repo
374 $ echo a > a
374 $ echo a > a
375 $ hg add a
375 $ hg add a
376 $ hg ci -m initial
376 $ hg ci -m initial
377 $ hg mv a b
377 $ hg mv a b
378 $ hg ci -m 'mv a b'
378 $ hg ci -m 'mv a b'
379 $ hg mv b c
379 $ hg mv b c
380 $ hg ci -m 'mv b c'
380 $ hg ci -m 'mv b c'
381 $ hg up -q 0
381 $ hg up -q 0
382 $ echo c > a
382 $ echo c > a
383 $ hg ci -m 'mod a'
383 $ hg ci -m 'mod a'
384 created new head
384 created new head
385 $ hg l
385 $ hg l
386 @ changeset: d413169422167a3fa5275fc5d71f7dea9f5775f3
386 @ rev: 3
387 | desc: mod a
387 | desc: mod a
388 | o changeset: d3efd280421d24f9f229997c19e654761c942a71
388 | o rev: 2
389 | | desc: mv b c
389 | | desc: mv b c
390 | o changeset: 472e38d57782172f6c6abed82a94ca0d998c3a22
390 | o rev: 1
391 |/ desc: mv a b
391 |/ desc: mv a b
392 o changeset: 1451231c87572a7d3f92fc210b4b35711c949a98
392 o rev: 0
393 desc: initial
393 desc: initial
394 $ hg rebase -s 1 -d .
394 $ hg rebase -s 1 -d .
395 rebasing 1:472e38d57782 "mv a b"
395 rebasing 1:472e38d57782 "mv a b"
396 merging a and b to b
396 merging a and b to b
397 rebasing 2:d3efd280421d "mv b c"
397 rebasing 2:d3efd280421d "mv b c"
398 merging b and c to c
398 merging b and c to c
399 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/472e38d57782-ab8d3c58-rebase.hg
399 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/472e38d57782-ab8d3c58-rebase.hg
400
400
401 $ cd ..
401 $ cd ..
402 $ rm -rf repo
402 $ rm -rf repo
403
403
404 Move one file and add another file in the same folder in one branch, modify file in another branch
404 Move one file and add another file in the same folder in one branch, modify file in another branch
405 --------------------------------------------------------------------------------------------------
405 --------------------------------------------------------------------------------------------------
406
406
407 $ hg init repo
407 $ hg init repo
408 $ initclient repo
408 $ initclient repo
409 $ cd repo
409 $ cd repo
410 $ echo a > a
410 $ echo a > a
411 $ hg add a
411 $ hg add a
412 $ hg ci -m initial
412 $ hg ci -m initial
413 $ hg mv a b
413 $ hg mv a b
414 $ hg ci -m 'mv a b'
414 $ hg ci -m 'mv a b'
415 $ echo c > c
415 $ echo c > c
416 $ hg add c
416 $ hg add c
417 $ hg ci -m 'add c'
417 $ hg ci -m 'add c'
418 $ hg up -q 0
418 $ hg up -q 0
419 $ echo b > a
419 $ echo b > a
420 $ hg ci -m 'mod a'
420 $ hg ci -m 'mod a'
421 created new head
421 created new head
422
422
423 $ hg l
423 $ hg l
424 @ changeset: ef716627c70bf4ca0bdb623cfb0d6fe5b9acc51e
424 @ rev: 3
425 | desc: mod a
425 | desc: mod a
426 | o changeset: b1a6187e79fbce851bb584eadcb0cc4a80290fd9
426 | o rev: 2
427 | | desc: add c
427 | | desc: add c
428 | o changeset: 472e38d57782172f6c6abed82a94ca0d998c3a22
428 | o rev: 1
429 |/ desc: mv a b
429 |/ desc: mv a b
430 o changeset: 1451231c87572a7d3f92fc210b4b35711c949a98
430 o rev: 0
431 desc: initial
431 desc: initial
432
432
433 $ hg rebase -s . -d 2
433 $ hg rebase -s . -d 2
434 rebasing 3:ef716627c70b "mod a" (tip)
434 rebasing 3:ef716627c70b "mod a" (tip)
435 merging b and a to b
435 merging b and a to b
436 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/ef716627c70b-24681561-rebase.hg
436 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/ef716627c70b-24681561-rebase.hg
437 $ ls
437 $ ls
438 b
438 b
439 c
439 c
440 $ cat b
440 $ cat b
441 b
441 b
442 $ rm -rf repo
442 $ rm -rf repo
443
443
444 Merge test
444 Merge test
445 ----------
445 ----------
446
446
447 $ hg init repo
447 $ hg init repo
448 $ initclient repo
448 $ initclient repo
449 $ cd repo
449 $ cd repo
450 $ echo a > a
450 $ echo a > a
451 $ hg add a
451 $ hg add a
452 $ hg ci -m initial
452 $ hg ci -m initial
453 $ echo b > a
453 $ echo b > a
454 $ hg ci -m 'modify a'
454 $ hg ci -m 'modify a'
455 $ hg up -q 0
455 $ hg up -q 0
456 $ hg mv a b
456 $ hg mv a b
457 $ hg ci -m 'mv a b'
457 $ hg ci -m 'mv a b'
458 created new head
458 created new head
459 $ hg up -q 2
459 $ hg up -q 2
460
460
461 $ hg l
461 $ hg l
462 @ changeset: 472e38d57782172f6c6abed82a94ca0d998c3a22
462 @ rev: 2
463 | desc: mv a b
463 | desc: mv a b
464 | o changeset: b0357b07f79129a3d08a68621271ca1352ae8a09
464 | o rev: 1
465 |/ desc: modify a
465 |/ desc: modify a
466 o changeset: 1451231c87572a7d3f92fc210b4b35711c949a98
466 o rev: 0
467 desc: initial
467 desc: initial
468
468
469 $ hg merge 1
469 $ hg merge 1
470 merging b and a to b
470 merging b and a to b
471 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
471 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
472 (branch merge, don't forget to commit)
472 (branch merge, don't forget to commit)
473 $ hg ci -m merge
473 $ hg ci -m merge
474 $ ls
474 $ ls
475 b
475 b
476 $ cd ..
476 $ cd ..
477 $ rm -rf repo
477 $ rm -rf repo
478
478
479 Copy and move file
479 Copy and move file
480 ------------------
480 ------------------
481
481
482 $ hg init repo
482 $ hg init repo
483 $ initclient repo
483 $ initclient repo
484 $ cd repo
484 $ cd repo
485 $ echo a > a
485 $ echo a > a
486 $ hg add a
486 $ hg add a
487 $ hg ci -m initial
487 $ hg ci -m initial
488 $ hg cp a c
488 $ hg cp a c
489 $ hg mv a b
489 $ hg mv a b
490 $ hg ci -m 'cp a c, mv a b'
490 $ hg ci -m 'cp a c, mv a b'
491 $ hg up -q 0
491 $ hg up -q 0
492 $ echo b > a
492 $ echo b > a
493 $ hg ci -m 'mod a'
493 $ hg ci -m 'mod a'
494 created new head
494 created new head
495
495
496 $ hg l
496 $ hg l
497 @ changeset: ef716627c70bf4ca0bdb623cfb0d6fe5b9acc51e
497 @ rev: 2
498 | desc: mod a
498 | desc: mod a
499 | o changeset: 4fc3fd13fbdb89ada6b75bfcef3911a689a0dde8
499 | o rev: 1
500 |/ desc: cp a c, mv a b
500 |/ desc: cp a c, mv a b
501 o changeset: 1451231c87572a7d3f92fc210b4b35711c949a98
501 o rev: 0
502 desc: initial
502 desc: initial
503
503
504 $ hg rebase -s . -d 1
504 $ hg rebase -s . -d 1
505 rebasing 2:ef716627c70b "mod a" (tip)
505 rebasing 2:ef716627c70b "mod a" (tip)
506 merging b and a to b
506 merging b and a to b
507 merging c and a to c
507 merging c and a to c
508 saved backup bundle to $TESTTMP/repo/repo/.hg/strip-backup/ef716627c70b-24681561-rebase.hg
508 saved backup bundle to $TESTTMP/repo/repo/.hg/strip-backup/ef716627c70b-24681561-rebase.hg
509 $ ls
509 $ ls
510 b
510 b
511 c
511 c
512 $ cat b
512 $ cat b
513 b
513 b
514 $ cat c
514 $ cat c
515 b
515 b
516 $ cd ..
516 $ cd ..
517 $ rm -rf repo
517 $ rm -rf repo
518
518
519 Do a merge commit with many consequent moves in one branch
519 Do a merge commit with many consequent moves in one branch
520 ----------------------------------------------------------
520 ----------------------------------------------------------
521
521
522 $ hg init repo
522 $ hg init repo
523 $ initclient repo
523 $ initclient repo
524 $ cd repo
524 $ cd repo
525 $ echo a > a
525 $ echo a > a
526 $ hg add a
526 $ hg add a
527 $ hg ci -m initial
527 $ hg ci -m initial
528 $ echo b > a
528 $ echo b > a
529 $ hg ci -qm 'mod a'
529 $ hg ci -qm 'mod a'
530 $ hg up -q ".^"
530 $ hg up -q ".^"
531 $ hg mv a b
531 $ hg mv a b
532 $ hg ci -qm 'mv a b'
532 $ hg ci -qm 'mv a b'
533 $ hg mv b c
533 $ hg mv b c
534 $ hg ci -qm 'mv b c'
534 $ hg ci -qm 'mv b c'
535 $ hg up -q 1
535 $ hg up -q 1
536 $ hg l
536 $ hg l
537 o changeset: d3efd280421d24f9f229997c19e654761c942a71
537 o rev: 3
538 | desc: mv b c
538 | desc: mv b c
539 o changeset: 472e38d57782172f6c6abed82a94ca0d998c3a22
539 o rev: 2
540 | desc: mv a b
540 | desc: mv a b
541 | @ changeset: ef716627c70bf4ca0bdb623cfb0d6fe5b9acc51e
541 | @ rev: 1
542 |/ desc: mod a
542 |/ desc: mod a
543 o changeset: 1451231c87572a7d3f92fc210b4b35711c949a98
543 o rev: 0
544 desc: initial
544 desc: initial
545
545
546 $ hg merge 3
546 $ hg merge 3
547 merging a and c to c
547 merging a and c to c
548 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
548 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
549 (branch merge, don't forget to commit)
549 (branch merge, don't forget to commit)
550 $ hg ci -qm 'merge'
550 $ hg ci -qm 'merge'
551 $ hg pl
551 $ hg pl
552 @ changeset: cd29b0d08c0f39bfed4cde1b40e30f419db0c825
552 @ rev: 4, phase: draft
553 |\ desc: merge, phase: draft
553 |\ desc: merge
554 | o changeset: d3efd280421d24f9f229997c19e654761c942a71
554 | o rev: 3, phase: draft
555 | | desc: mv b c, phase: draft
555 | | desc: mv b c
556 | o changeset: 472e38d57782172f6c6abed82a94ca0d998c3a22
556 | o rev: 2, phase: draft
557 | | desc: mv a b, phase: draft
557 | | desc: mv a b
558 o | changeset: ef716627c70bf4ca0bdb623cfb0d6fe5b9acc51e
558 o | rev: 1, phase: draft
559 |/ desc: mod a, phase: draft
559 |/ desc: mod a
560 o changeset: 1451231c87572a7d3f92fc210b4b35711c949a98
560 o rev: 0, phase: draft
561 desc: initial, phase: draft
561 desc: initial
562 $ ls
562 $ ls
563 c
563 c
564 $ cd ..
564 $ cd ..
565 $ rm -rf repo
565 $ rm -rf repo
566
566
567 Test shelve/unshelve
567 Test shelve/unshelve
568 -------------------
568 -------------------
569
569
570 $ hg init repo
570 $ hg init repo
571 $ initclient repo
571 $ initclient repo
572 $ cd repo
572 $ cd repo
573 $ echo a > a
573 $ echo a > a
574 $ hg add a
574 $ hg add a
575 $ hg ci -m initial
575 $ hg ci -m initial
576 $ echo b > a
576 $ echo b > a
577 $ hg shelve
577 $ hg shelve
578 shelved as default
578 shelved as default
579 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
579 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
580 $ hg mv a b
580 $ hg mv a b
581 $ hg ci -m 'mv a b'
581 $ hg ci -m 'mv a b'
582
582
583 $ hg l
583 $ hg l
584 @ changeset: 472e38d57782172f6c6abed82a94ca0d998c3a22
584 @ rev: 1
585 | desc: mv a b
585 | desc: mv a b
586 o changeset: 1451231c87572a7d3f92fc210b4b35711c949a98
586 o rev: 0
587 desc: initial
587 desc: initial
588 $ hg unshelve
588 $ hg unshelve
589 unshelving change 'default'
589 unshelving change 'default'
590 rebasing shelved changes
590 rebasing shelved changes
591 merging b and a to b
591 merging b and a to b
592 $ ls
592 $ ls
593 b
593 b
594 $ cat b
594 $ cat b
595 b
595 b
596 $ cd ..
596 $ cd ..
597 $ rm -rf repo
597 $ rm -rf repo
598
598
599 Test full copytrace ability on draft branch
599 Test full copytrace ability on draft branch
600 -------------------------------------------
600 -------------------------------------------
601
601
602 File directory and base name changed in same move
602 File directory and base name changed in same move
603 $ hg init repo
603 $ hg init repo
604 $ initclient repo
604 $ initclient repo
605 $ mkdir repo/dir1
605 $ mkdir repo/dir1
606 $ cd repo/dir1
606 $ cd repo/dir1
607 $ echo a > a
607 $ echo a > a
608 $ hg add a
608 $ hg add a
609 $ hg ci -qm initial
609 $ hg ci -qm initial
610 $ cd ..
610 $ cd ..
611 $ hg mv -q dir1 dir2
611 $ hg mv -q dir1 dir2
612 $ hg mv dir2/a dir2/b
612 $ hg mv dir2/a dir2/b
613 $ hg ci -qm 'mv a b; mv dir1 dir2'
613 $ hg ci -qm 'mv a b; mv dir1 dir2'
614 $ hg up -q '.^'
614 $ hg up -q '.^'
615 $ cd dir1
615 $ cd dir1
616 $ echo b >> a
616 $ echo b >> a
617 $ cd ..
617 $ cd ..
618 $ hg ci -qm 'mod a'
618 $ hg ci -qm 'mod a'
619
619
620 $ hg pl
620 $ hg pl
621 @ changeset: 6207d2d318e710b882e3d5ada2a89770efc42c96
621 @ rev: 2, phase: draft
622 | desc: mod a, phase: draft
622 | desc: mod a
623 | o changeset: abffdd4e3dfc04bc375034b970299b2a309a1cce
623 | o rev: 1, phase: draft
624 |/ desc: mv a b; mv dir1 dir2, phase: draft
624 |/ desc: mv a b; mv dir1 dir2
625 o changeset: 81973cd24b58db2fdf18ce3d64fb2cc3284e9ab3
625 o rev: 0, phase: draft
626 desc: initial, phase: draft
626 desc: initial
627
627
628 $ hg rebase -s . -d 1 --config experimental.copytrace.sourcecommitlimit=100
628 $ hg rebase -s . -d 1 --config experimental.copytrace.sourcecommitlimit=100
629 rebasing 2:6207d2d318e7 "mod a" (tip)
629 rebasing 2:6207d2d318e7 "mod a" (tip)
630 merging dir2/b and dir1/a to dir2/b
630 merging dir2/b and dir1/a to dir2/b
631 saved backup bundle to $TESTTMP/repo/repo/.hg/strip-backup/6207d2d318e7-1c9779ad-rebase.hg
631 saved backup bundle to $TESTTMP/repo/repo/.hg/strip-backup/6207d2d318e7-1c9779ad-rebase.hg
632 $ cat dir2/b
632 $ cat dir2/b
633 a
633 a
634 b
634 b
635 $ cd ..
635 $ cd ..
636 $ rm -rf repo
636 $ rm -rf repo
637
637
638 Move directory in one merge parent, while adding file to original directory
638 Move directory in one merge parent, while adding file to original directory
639 in other merge parent. File moved on rebase.
639 in other merge parent. File moved on rebase.
640
640
641 $ hg init repo
641 $ hg init repo
642 $ initclient repo
642 $ initclient repo
643 $ mkdir repo/dir1
643 $ mkdir repo/dir1
644 $ cd repo/dir1
644 $ cd repo/dir1
645 $ echo dummy > dummy
645 $ echo dummy > dummy
646 $ hg add dummy
646 $ hg add dummy
647 $ cd ..
647 $ cd ..
648 $ hg ci -qm initial
648 $ hg ci -qm initial
649 $ cd dir1
649 $ cd dir1
650 $ echo a > a
650 $ echo a > a
651 $ hg add a
651 $ hg add a
652 $ cd ..
652 $ cd ..
653 $ hg ci -qm 'hg add dir1/a'
653 $ hg ci -qm 'hg add dir1/a'
654 $ hg up -q '.^'
654 $ hg up -q '.^'
655 $ hg mv -q dir1 dir2
655 $ hg mv -q dir1 dir2
656 $ hg ci -qm 'mv dir1 dir2'
656 $ hg ci -qm 'mv dir1 dir2'
657
657
658 $ hg pl
658 $ hg pl
659 @ changeset: e8919e7df8d036e07b906045eddcd4a42ff1915f
659 @ rev: 2, phase: draft
660 | desc: mv dir1 dir2, phase: draft
660 | desc: mv dir1 dir2
661 | o changeset: 7c7c6f339be00f849c3cb2df738ca91db78b32c8
661 | o rev: 1, phase: draft
662 |/ desc: hg add dir1/a, phase: draft
662 |/ desc: hg add dir1/a
663 o changeset: a235dcce55dcf42034c4e374cb200662d0bb4a13
663 o rev: 0, phase: draft
664 desc: initial, phase: draft
664 desc: initial
665
665
666 $ hg rebase -s . -d 1 --config experimental.copytrace.sourcecommitlimit=100
666 $ hg rebase -s . -d 1 --config experimental.copytrace.sourcecommitlimit=100
667 rebasing 2:e8919e7df8d0 "mv dir1 dir2" (tip)
667 rebasing 2:e8919e7df8d0 "mv dir1 dir2" (tip)
668 saved backup bundle to $TESTTMP/repo/repo/.hg/strip-backup/e8919e7df8d0-f62fab62-rebase.hg
668 saved backup bundle to $TESTTMP/repo/repo/.hg/strip-backup/e8919e7df8d0-f62fab62-rebase.hg
669 $ ls dir2
669 $ ls dir2
670 a
670 a
671 dummy
671 dummy
672 $ rm -rf repo
672 $ rm -rf repo
673
673
674 Testing the sourcecommitlimit config
674 Testing the sourcecommitlimit config
675 -----------------------------------
675 -----------------------------------
676
676
677 $ hg init repo
677 $ hg init repo
678 $ initclient repo
678 $ initclient repo
679 $ cd repo
679 $ cd repo
680 $ echo a > a
680 $ echo a > a
681 $ hg ci -Aqm "added a"
681 $ hg ci -Aqm "added a"
682 $ echo "more things" >> a
682 $ echo "more things" >> a
683 $ hg ci -qm "added more things to a"
683 $ hg ci -qm "added more things to a"
684 $ hg up 0
684 $ hg up 0
685 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
685 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
686 $ echo b > b
686 $ echo b > b
687 $ hg ci -Aqm "added b"
687 $ hg ci -Aqm "added b"
688 $ mkdir foo
688 $ mkdir foo
689 $ hg mv a foo/bar
689 $ hg mv a foo/bar
690 $ hg ci -m "Moved a to foo/bar"
690 $ hg ci -m "Moved a to foo/bar"
691 $ hg pl
691 $ hg pl
692 @ changeset: b4b0f7880e500b5c364a5f07b4a2b167de7a6fb0
692 @ rev: 3, phase: draft
693 | desc: Moved a to foo/bar, phase: draft
693 | desc: Moved a to foo/bar
694 o changeset: 5f6d8a4bf34ab274ccc9f631c2536964b8a3666d
694 o rev: 2, phase: draft
695 | desc: added b, phase: draft
695 | desc: added b
696 | o changeset: 8b6e13696c38e8445a759516474640c2f8dddef6
696 | o rev: 1, phase: draft
697 |/ desc: added more things to a, phase: draft
697 |/ desc: added more things to a
698 o changeset: 9092f1db7931481f93b37d5c9fbcfc341bcd7318
698 o rev: 0, phase: draft
699 desc: added a, phase: draft
699 desc: added a
700
700
701 When the sourcecommitlimit is small and we have more drafts, we use heuristics only
701 When the sourcecommitlimit is small and we have more drafts, we use heuristics only
702
702
703 $ hg rebase -s 8b6e13696 -d .
703 $ hg rebase -s 1 -d .
704 rebasing 1:8b6e13696c38 "added more things to a"
704 rebasing 1:8b6e13696c38 "added more things to a"
705 file 'a' was deleted in local [dest] but was modified in other [source].
705 file 'a' was deleted in local [dest] but was modified in other [source].
706 What do you want to do?
706 What do you want to do?
707 use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
707 use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u
708 unresolved conflicts (see hg resolve, then hg rebase --continue)
708 unresolved conflicts (see hg resolve, then hg rebase --continue)
709 [1]
709 [1]
710
710
711 But when we have "sourcecommitlimit > (no. of drafts from base to c1)", we do
711 But when we have "sourcecommitlimit > (no. of drafts from base to c1)", we do
712 fullcopytracing
712 fullcopytracing
713
713
714 $ hg rebase --abort
714 $ hg rebase --abort
715 rebase aborted
715 rebase aborted
716 $ hg rebase -s 8b6e13696 -d . --config experimental.copytrace.sourcecommitlimit=100
716 $ hg rebase -s 1 -d . --config experimental.copytrace.sourcecommitlimit=100
717 rebasing 1:8b6e13696c38 "added more things to a"
717 rebasing 1:8b6e13696c38 "added more things to a"
718 merging foo/bar and a to foo/bar
718 merging foo/bar and a to foo/bar
719 saved backup bundle to $TESTTMP/repo/repo/repo/.hg/strip-backup/8b6e13696c38-fc14ac83-rebase.hg
719 saved backup bundle to $TESTTMP/repo/repo/repo/.hg/strip-backup/8b6e13696c38-fc14ac83-rebase.hg
720 $ cd ..
720 $ cd ..
721 $ rm -rf repo
721 $ rm -rf repo
General Comments 0
You need to be logged in to leave comments. Login now