##// END OF EJS Templates
tests: set git config using `git config` for simplicity...
Martin von Zweigbergk -
r46276:0c184932 default
parent child Browse files
Show More
@@ -1,1173 +1,1169 b''
1 1 #require git
2 2
3 $ echo "[init]" >> $HOME/.gitconfig
4 $ echo "defaultBranch = master" >> $HOME/.gitconfig
5 $ echo "[core]" >> $HOME/.gitconfig
6 $ echo "autocrlf = false" >> $HOME/.gitconfig
7 $ echo "[core]" >> $HOME/.gitconfig
8 $ echo "autocrlf = false" >> $HOME/.gitconfig
3 $ git config -f $HOME/.gitconfig init.defaultBranch master
4 $ git config -f $HOME/.gitconfig core.autocrlf false
9 5 $ echo "[extensions]" >> $HGRCPATH
10 6 $ echo "convert=" >> $HGRCPATH
11 7 $ cat >> $HGRCPATH <<EOF
12 8 > [subrepos]
13 9 > git:allowed = true
14 10 > EOF
15 11 $ GIT_AUTHOR_NAME='test'; export GIT_AUTHOR_NAME
16 12 $ GIT_AUTHOR_EMAIL='test@example.org'; export GIT_AUTHOR_EMAIL
17 13 $ GIT_AUTHOR_DATE="2007-01-01 00:00:00 +0000"; export GIT_AUTHOR_DATE
18 14 $ GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"; export GIT_COMMITTER_NAME
19 15 $ GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"; export GIT_COMMITTER_EMAIL
20 16 $ GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"; export GIT_COMMITTER_DATE
21 17 $ INVALIDID1=afd12345af
22 18 $ INVALIDID2=28173x36ddd1e67bf7098d541130558ef5534a86
23 19 $ VALIDID1=39b3d83f9a69a9ba4ebb111461071a0af0027357
24 20 $ VALIDID2=8dd6476bd09d9c7776355dc454dafe38efaec5da
25 21 $ count=10
26 22 $ commit()
27 23 > {
28 24 > GIT_AUTHOR_DATE="2007-01-01 00:00:$count +0000"
29 25 > GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"
30 26 > git commit "$@" >/dev/null 2>/dev/null || echo "git commit error"
31 27 > count=`expr $count + 1`
32 28 > }
33 29 $ mkdir git-repo
34 30 $ cd git-repo
35 31 $ git init >/dev/null 2>/dev/null
36 32 $ echo a > a
37 33 $ mkdir d
38 34 $ echo b > d/b
39 35 $ git add a d
40 36 $ commit -a -m t1
41 37
42 38 Remove the directory, then try to replace it with a file (issue754)
43 39
44 40 $ git rm -f d/b
45 41 rm 'd/b'
46 42 $ commit -m t2
47 43 $ echo d > d
48 44 $ git add d
49 45 $ commit -m t3
50 46 $ echo b >> a
51 47 $ commit -a -m t4.1
52 48 $ git checkout -b other HEAD~ >/dev/null 2>/dev/null
53 49 $ echo c > a
54 50 $ echo a >> a
55 51 $ commit -a -m t4.2
56 52 $ git checkout master >/dev/null 2>/dev/null
57 53 $ git pull --no-commit . other > /dev/null 2>/dev/null
58 54 $ commit -m 'Merge branch other'
59 55 $ cd ..
60 56 $ hg convert --config extensions.progress= --config progress.assume-tty=1 \
61 57 > --config progress.delay=0 --config progress.changedelay=0 \
62 58 > --config progress.refresh=0 --config progress.width=60 \
63 59 > --config progress.format='topic, bar, number' --datesort git-repo
64 60 \r (no-eol) (esc)
65 61 scanning [======> ] 1/6\r (no-eol) (esc)
66 62 scanning [=============> ] 2/6\r (no-eol) (esc)
67 63 scanning [=====================> ] 3/6\r (no-eol) (esc)
68 64 scanning [============================> ] 4/6\r (no-eol) (esc)
69 65 scanning [===================================> ] 5/6\r (no-eol) (esc)
70 66 scanning [===========================================>] 6/6\r (no-eol) (esc)
71 67 \r (no-eol) (esc)
72 68 \r (no-eol) (esc)
73 69 converting [ ] 0/6\r (no-eol) (esc)
74 70 getting files [==================> ] 1/2\r (no-eol) (esc)
75 71 getting files [======================================>] 2/2\r (no-eol) (esc)
76 72 \r (no-eol) (esc)
77 73 \r (no-eol) (esc)
78 74 converting [======> ] 1/6\r (no-eol) (esc)
79 75 getting files [======================================>] 1/1\r (no-eol) (esc)
80 76 \r (no-eol) (esc)
81 77 \r (no-eol) (esc)
82 78 converting [=============> ] 2/6\r (no-eol) (esc)
83 79 getting files [======================================>] 1/1\r (no-eol) (esc)
84 80 \r (no-eol) (esc)
85 81 \r (no-eol) (esc)
86 82 converting [====================> ] 3/6\r (no-eol) (esc)
87 83 getting files [======================================>] 1/1\r (no-eol) (esc)
88 84 \r (no-eol) (esc)
89 85 \r (no-eol) (esc)
90 86 converting [===========================> ] 4/6\r (no-eol) (esc)
91 87 getting files [======================================>] 1/1\r (no-eol) (esc)
92 88 \r (no-eol) (esc)
93 89 \r (no-eol) (esc)
94 90 converting [==================================> ] 5/6\r (no-eol) (esc)
95 91 getting files [======================================>] 1/1\r (no-eol) (esc)
96 92 \r (no-eol) (esc)
97 93 assuming destination git-repo-hg
98 94 initializing destination git-repo-hg repository
99 95 scanning source...
100 96 sorting...
101 97 converting...
102 98 5 t1
103 99 4 t2
104 100 3 t3
105 101 2 t4.1
106 102 1 t4.2
107 103 0 Merge branch other
108 104 updating bookmarks
109 105 $ hg up -q -R git-repo-hg
110 106 $ hg -R git-repo-hg tip -v
111 107 changeset: 5:c78094926be2
112 108 bookmark: master
113 109 tag: tip
114 110 parent: 3:f5f5cb45432b
115 111 parent: 4:4e174f80c67c
116 112 user: test <test@example.org>
117 113 date: Mon Jan 01 00:00:15 2007 +0000
118 114 files: a
119 115 description:
120 116 Merge branch other
121 117
122 118
123 119 $ count=10
124 120 $ mkdir git-repo2
125 121 $ cd git-repo2
126 122 $ git init >/dev/null 2>/dev/null
127 123 $ echo foo > foo
128 124 $ git add foo
129 125 $ commit -a -m 'add foo'
130 126 $ echo >> foo
131 127 $ commit -a -m 'change foo'
132 128 $ git checkout -b Bar HEAD~ >/dev/null 2>/dev/null
133 129 $ echo quux >> quux
134 130 $ git add quux
135 131 $ commit -a -m 'add quux'
136 132 $ echo bar > bar
137 133 $ git add bar
138 134 $ commit -a -m 'add bar'
139 135 $ git checkout -b Baz HEAD~ >/dev/null 2>/dev/null
140 136 $ echo baz > baz
141 137 $ git add baz
142 138 $ commit -a -m 'add baz'
143 139 $ git checkout master >/dev/null 2>/dev/null
144 140 $ git pull --no-commit . Bar Baz > /dev/null 2>/dev/null
145 141 $ commit -m 'Octopus merge'
146 142 $ echo bar >> bar
147 143 $ commit -a -m 'change bar'
148 144 $ git checkout -b Foo HEAD~ >/dev/null 2>/dev/null
149 145 $ echo >> foo
150 146 $ commit -a -m 'change foo'
151 147 $ git checkout master >/dev/null 2>/dev/null
152 148 $ git pull --no-commit -s ours . Foo > /dev/null 2>/dev/null
153 149 $ commit -m 'Discard change to foo'
154 150 $ cd ..
155 151 $ glog()
156 152 > {
157 153 > hg log -G --template '{rev} "{desc|firstline}" files: {files}\n' "$@"
158 154 > }
159 155 $ splitrepo()
160 156 > {
161 157 > msg="$1"
162 158 > files="$2"
163 159 > opts=$3
164 160 > echo "% $files: $msg"
165 161 > prefix=`echo "$files" | sed -e 's/ /-/g'`
166 162 > fmap="$prefix.fmap"
167 163 > repo="$prefix.repo"
168 164 > for i in $files; do
169 165 > echo "include $i" >> "$fmap"
170 166 > done
171 167 > hg -q convert $opts --filemap "$fmap" --datesort git-repo2 "$repo"
172 168 > hg up -q -R "$repo"
173 169 > glog -R "$repo"
174 170 > hg -R "$repo" manifest --debug
175 171 > }
176 172
177 173 full conversion
178 174
179 175 $ hg convert --datesort git-repo2 fullrepo \
180 176 > --config extensions.progress= --config progress.assume-tty=1 \
181 177 > --config progress.delay=0 --config progress.changedelay=0 \
182 178 > --config progress.refresh=0 --config progress.width=60 \
183 179 > --config progress.format='topic, bar, number'
184 180 \r (no-eol) (esc)
185 181 scanning [===> ] 1/9\r (no-eol) (esc)
186 182 scanning [========> ] 2/9\r (no-eol) (esc)
187 183 scanning [=============> ] 3/9\r (no-eol) (esc)
188 184 scanning [==================> ] 4/9\r (no-eol) (esc)
189 185 scanning [=======================> ] 5/9\r (no-eol) (esc)
190 186 scanning [============================> ] 6/9\r (no-eol) (esc)
191 187 scanning [=================================> ] 7/9\r (no-eol) (esc)
192 188 scanning [======================================> ] 8/9\r (no-eol) (esc)
193 189 scanning [===========================================>] 9/9\r (no-eol) (esc)
194 190 \r (no-eol) (esc)
195 191 \r (no-eol) (esc)
196 192 converting [ ] 0/9\r (no-eol) (esc)
197 193 getting files [======================================>] 1/1\r (no-eol) (esc)
198 194 \r (no-eol) (esc)
199 195 \r (no-eol) (esc)
200 196 converting [===> ] 1/9\r (no-eol) (esc)
201 197 getting files [======================================>] 1/1\r (no-eol) (esc)
202 198 \r (no-eol) (esc)
203 199 \r (no-eol) (esc)
204 200 converting [========> ] 2/9\r (no-eol) (esc)
205 201 getting files [======================================>] 1/1\r (no-eol) (esc)
206 202 \r (no-eol) (esc)
207 203 \r (no-eol) (esc)
208 204 converting [=============> ] 3/9\r (no-eol) (esc)
209 205 getting files [======================================>] 1/1\r (no-eol) (esc)
210 206 \r (no-eol) (esc)
211 207 \r (no-eol) (esc)
212 208 converting [=================> ] 4/9\r (no-eol) (esc)
213 209 getting files [======================================>] 1/1\r (no-eol) (esc)
214 210 \r (no-eol) (esc)
215 211 \r (no-eol) (esc)
216 212 converting [======================> ] 5/9\r (no-eol) (esc)
217 213 getting files [===> ] 1/8\r (no-eol) (esc)
218 214 getting files [========> ] 2/8\r (no-eol) (esc)
219 215 getting files [=============> ] 3/8\r (no-eol) (esc)
220 216 getting files [==================> ] 4/8\r (no-eol) (esc)
221 217 getting files [=======================> ] 5/8\r (no-eol) (esc)
222 218 getting files [============================> ] 6/8\r (no-eol) (esc)
223 219 getting files [=================================> ] 7/8\r (no-eol) (esc)
224 220 getting files [======================================>] 8/8\r (no-eol) (esc)
225 221 \r (no-eol) (esc)
226 222 \r (no-eol) (esc)
227 223 converting [===========================> ] 6/9\r (no-eol) (esc)
228 224 getting files [======================================>] 1/1\r (no-eol) (esc)
229 225 \r (no-eol) (esc)
230 226 \r (no-eol) (esc)
231 227 converting [===============================> ] 7/9\r (no-eol) (esc)
232 228 getting files [======================================>] 1/1\r (no-eol) (esc)
233 229 \r (no-eol) (esc)
234 230 \r (no-eol) (esc)
235 231 converting [====================================> ] 8/9\r (no-eol) (esc)
236 232 getting files [==================> ] 1/2\r (no-eol) (esc)
237 233 getting files [======================================>] 2/2\r (no-eol) (esc)
238 234 \r (no-eol) (esc)
239 235 initializing destination fullrepo repository
240 236 scanning source...
241 237 sorting...
242 238 converting...
243 239 8 add foo
244 240 7 change foo
245 241 6 add quux
246 242 5 add bar
247 243 4 add baz
248 244 3 Octopus merge
249 245 2 change bar
250 246 1 change foo
251 247 0 Discard change to foo
252 248 updating bookmarks
253 249 $ hg up -q -R fullrepo
254 250 $ glog -R fullrepo
255 251 @ 9 "Discard change to foo" files: foo
256 252 |\
257 253 | o 8 "change foo" files: foo
258 254 | |
259 255 o | 7 "change bar" files: bar
260 256 |/
261 257 o 6 "(octopus merge fixup)" files:
262 258 |\
263 259 | o 5 "Octopus merge" files: baz
264 260 | |\
265 261 o | | 4 "add baz" files: baz
266 262 | | |
267 263 +---o 3 "add bar" files: bar
268 264 | |
269 265 o | 2 "add quux" files: quux
270 266 | |
271 267 | o 1 "change foo" files: foo
272 268 |/
273 269 o 0 "add foo" files: foo
274 270
275 271 $ hg -R fullrepo manifest --debug
276 272 245a3b8bc653999c2b22cdabd517ccb47aecafdf 644 bar
277 273 354ae8da6e890359ef49ade27b68bbc361f3ca88 644 baz
278 274 9277c9cc8dd4576fc01a17939b4351e5ada93466 644 foo
279 275 88dfeab657e8cf2cef3dec67b914f49791ae76b1 644 quux
280 276 $ splitrepo 'octopus merge' 'foo bar baz'
281 277 % foo bar baz: octopus merge
282 278 @ 8 "Discard change to foo" files: foo
283 279 |\
284 280 | o 7 "change foo" files: foo
285 281 | |
286 282 o | 6 "change bar" files: bar
287 283 |/
288 284 o 5 "(octopus merge fixup)" files:
289 285 |\
290 286 | o 4 "Octopus merge" files: baz
291 287 | |\
292 288 o | | 3 "add baz" files: baz
293 289 | | |
294 290 +---o 2 "add bar" files: bar
295 291 | |
296 292 | o 1 "change foo" files: foo
297 293 |/
298 294 o 0 "add foo" files: foo
299 295
300 296 245a3b8bc653999c2b22cdabd517ccb47aecafdf 644 bar
301 297 354ae8da6e890359ef49ade27b68bbc361f3ca88 644 baz
302 298 9277c9cc8dd4576fc01a17939b4351e5ada93466 644 foo
303 299 $ splitrepo 'only some parents of an octopus merge; "discard" a head' 'foo baz quux'
304 300 % foo baz quux: only some parents of an octopus merge; "discard" a head
305 301 @ 6 "Discard change to foo" files: foo
306 302 |
307 303 o 5 "change foo" files: foo
308 304 |
309 305 o 4 "Octopus merge" files:
310 306 |\
311 307 | o 3 "add baz" files: baz
312 308 | |
313 309 | o 2 "add quux" files: quux
314 310 | |
315 311 o | 1 "change foo" files: foo
316 312 |/
317 313 o 0 "add foo" files: foo
318 314
319 315 354ae8da6e890359ef49ade27b68bbc361f3ca88 644 baz
320 316 9277c9cc8dd4576fc01a17939b4351e5ada93466 644 foo
321 317 88dfeab657e8cf2cef3dec67b914f49791ae76b1 644 quux
322 318
323 319 test importing git renames and copies
324 320
325 321 $ cd git-repo2
326 322 $ git mv foo foo-renamed
327 323 since bar is not touched in this commit, this copy will not be detected
328 324 $ cp bar bar-copied
329 325 $ cp baz baz-copied
330 326 $ cp baz baz-copied2
331 327 $ cp baz ba-copy
332 328 $ echo baz2 >> baz
333 329 $ git add bar-copied baz-copied baz-copied2 ba-copy
334 330 $ commit -a -m 'rename and copy'
335 331 $ cd ..
336 332
337 333 input validation
338 334 $ hg convert --config convert.git.similarity=foo --datesort git-repo2 fullrepo
339 335 abort: convert.git.similarity is not a valid integer ('foo')
340 336 [255]
341 337 $ hg convert --config convert.git.similarity=-1 --datesort git-repo2 fullrepo
342 338 abort: similarity must be between 0 and 100
343 339 [255]
344 340 $ hg convert --config convert.git.similarity=101 --datesort git-repo2 fullrepo
345 341 abort: similarity must be between 0 and 100
346 342 [255]
347 343
348 344 $ hg -q convert --config convert.git.similarity=100 --datesort git-repo2 fullrepo
349 345 $ hg -R fullrepo status -C --change master
350 346 M baz
351 347 A ba-copy
352 348 baz
353 349 A bar-copied
354 350 A baz-copied
355 351 baz
356 352 A baz-copied2
357 353 baz
358 354 A foo-renamed
359 355 foo
360 356 R foo
361 357
362 358 Ensure that the modification to the copy source was preserved
363 359 (there was a bug where if the copy dest was alphabetically prior to the copy
364 360 source, the copy source took the contents of the copy dest)
365 361 $ hg cat -r tip fullrepo/baz
366 362 baz
367 363 baz2
368 364
369 365 $ cd git-repo2
370 366 $ echo bar2 >> bar
371 367 $ commit -a -m 'change bar'
372 368 $ cp bar bar-copied2
373 369 $ git add bar-copied2
374 370 $ commit -a -m 'copy with no changes'
375 371 $ cd ..
376 372
377 373 $ hg -q convert --config convert.git.similarity=100 \
378 374 > --config convert.git.findcopiesharder=1 --datesort git-repo2 fullrepo
379 375 $ hg -R fullrepo status -C --change master
380 376 A bar-copied2
381 377 bar
382 378
383 379 renamelimit config option works
384 380
385 381 $ cd git-repo2
386 382 $ cat >> copy-source << EOF
387 383 > sc0
388 384 > sc1
389 385 > sc2
390 386 > sc3
391 387 > sc4
392 388 > sc5
393 389 > sc6
394 390 > EOF
395 391 $ git add copy-source
396 392 $ commit -m 'add copy-source'
397 393 $ cp copy-source source-copy0
398 394 $ echo 0 >> source-copy0
399 395 $ cp copy-source source-copy1
400 396 $ echo 1 >> source-copy1
401 397 $ git add source-copy0 source-copy1
402 398 $ commit -a -m 'copy copy-source 2 times'
403 399 $ cd ..
404 400
405 401 $ hg -q convert --config convert.git.renamelimit=1 \
406 402 > --config convert.git.findcopiesharder=true --datesort git-repo2 fullrepo2
407 403 $ hg -R fullrepo2 status -C --change master
408 404 A source-copy0
409 405 A source-copy1
410 406
411 407 $ hg -q convert --config convert.git.renamelimit=100 \
412 408 > --config convert.git.findcopiesharder=true --datesort git-repo2 fullrepo3
413 409 $ hg -R fullrepo3 status -C --change master
414 410 A source-copy0
415 411 copy-source
416 412 A source-copy1
417 413 copy-source
418 414
419 415 test binary conversion (issue1359)
420 416
421 417 $ count=19
422 418 $ mkdir git-repo3
423 419 $ cd git-repo3
424 420 $ git init >/dev/null 2>/dev/null
425 421 $ "$PYTHON" -c 'import struct; open("b", "wb").write(b"".join([struct.Struct(">B").pack(i) for i in range(256)])*16)'
426 422 $ git add b
427 423 $ commit -a -m addbinary
428 424 $ cd ..
429 425
430 426 convert binary file
431 427
432 428 $ hg convert git-repo3 git-repo3-hg
433 429 initializing destination git-repo3-hg repository
434 430 scanning source...
435 431 sorting...
436 432 converting...
437 433 0 addbinary
438 434 updating bookmarks
439 435 $ cd git-repo3-hg
440 436 $ hg up -C
441 437 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
442 438 $ "$PYTHON" -c 'from __future__ import print_function; print(len(open("b", "rb").read()))'
443 439 4096
444 440 $ cd ..
445 441
446 442 test author vs committer
447 443
448 444 $ mkdir git-repo4
449 445 $ cd git-repo4
450 446 $ git init >/dev/null 2>/dev/null
451 447 $ echo >> foo
452 448 $ git add foo
453 449 $ commit -a -m addfoo
454 450 $ echo >> foo
455 451 $ GIT_AUTHOR_NAME="nottest"
456 452 $ commit -a -m addfoo2
457 453 $ cd ..
458 454
459 455 convert author committer
460 456
461 457 $ hg convert git-repo4 git-repo4-hg
462 458 initializing destination git-repo4-hg repository
463 459 scanning source...
464 460 sorting...
465 461 converting...
466 462 1 addfoo
467 463 0 addfoo2
468 464 updating bookmarks
469 465 $ hg -R git-repo4-hg log -v
470 466 changeset: 1:d63e967f93da
471 467 bookmark: master
472 468 tag: tip
473 469 user: nottest <test@example.org>
474 470 date: Mon Jan 01 00:00:21 2007 +0000
475 471 files: foo
476 472 description:
477 473 addfoo2
478 474
479 475 committer: test <test@example.org>
480 476
481 477
482 478 changeset: 0:0735477b0224
483 479 user: test <test@example.org>
484 480 date: Mon Jan 01 00:00:20 2007 +0000
485 481 files: foo
486 482 description:
487 483 addfoo
488 484
489 485
490 486
491 487 Various combinations of committeractions fail
492 488
493 489 $ hg --config convert.git.committeractions=messagedifferent,messagealways convert git-repo4 bad-committer
494 490 initializing destination bad-committer repository
495 491 abort: committeractions cannot define both messagedifferent and messagealways
496 492 [255]
497 493
498 494 $ hg --config convert.git.committeractions=dropcommitter,replaceauthor convert git-repo4 bad-committer
499 495 initializing destination bad-committer repository
500 496 abort: committeractions cannot define both dropcommitter and replaceauthor
501 497 [255]
502 498
503 499 $ hg --config convert.git.committeractions=dropcommitter,messagealways convert git-repo4 bad-committer
504 500 initializing destination bad-committer repository
505 501 abort: committeractions cannot define both dropcommitter and messagealways
506 502 [255]
507 503
508 504 custom prefix on messagedifferent works
509 505
510 506 $ hg --config convert.git.committeractions=messagedifferent=different: convert git-repo4 git-repo4-hg-messagedifferentprefix
511 507 initializing destination git-repo4-hg-messagedifferentprefix repository
512 508 scanning source...
513 509 sorting...
514 510 converting...
515 511 1 addfoo
516 512 0 addfoo2
517 513 updating bookmarks
518 514
519 515 $ hg -R git-repo4-hg-messagedifferentprefix log -v
520 516 changeset: 1:2fe0c98a109d
521 517 bookmark: master
522 518 tag: tip
523 519 user: nottest <test@example.org>
524 520 date: Mon Jan 01 00:00:21 2007 +0000
525 521 files: foo
526 522 description:
527 523 addfoo2
528 524
529 525 different: test <test@example.org>
530 526
531 527
532 528 changeset: 0:0735477b0224
533 529 user: test <test@example.org>
534 530 date: Mon Jan 01 00:00:20 2007 +0000
535 531 files: foo
536 532 description:
537 533 addfoo
538 534
539 535
540 536
541 537 messagealways will always add the "committer: " line even if committer identical
542 538
543 539 $ hg --config convert.git.committeractions=messagealways convert git-repo4 git-repo4-hg-messagealways
544 540 initializing destination git-repo4-hg-messagealways repository
545 541 scanning source...
546 542 sorting...
547 543 converting...
548 544 1 addfoo
549 545 0 addfoo2
550 546 updating bookmarks
551 547
552 548 $ hg -R git-repo4-hg-messagealways log -v
553 549 changeset: 1:8db057d8cd37
554 550 bookmark: master
555 551 tag: tip
556 552 user: nottest <test@example.org>
557 553 date: Mon Jan 01 00:00:21 2007 +0000
558 554 files: foo
559 555 description:
560 556 addfoo2
561 557
562 558 committer: test <test@example.org>
563 559
564 560
565 561 changeset: 0:8f71fe9c98be
566 562 user: test <test@example.org>
567 563 date: Mon Jan 01 00:00:20 2007 +0000
568 564 files: foo
569 565 description:
570 566 addfoo
571 567
572 568 committer: test <test@example.org>
573 569
574 570
575 571
576 572 custom prefix on messagealways works
577 573
578 574 $ hg --config convert.git.committeractions=messagealways=always: convert git-repo4 git-repo4-hg-messagealwaysprefix
579 575 initializing destination git-repo4-hg-messagealwaysprefix repository
580 576 scanning source...
581 577 sorting...
582 578 converting...
583 579 1 addfoo
584 580 0 addfoo2
585 581 updating bookmarks
586 582
587 583 $ hg -R git-repo4-hg-messagealwaysprefix log -v
588 584 changeset: 1:83c17174de79
589 585 bookmark: master
590 586 tag: tip
591 587 user: nottest <test@example.org>
592 588 date: Mon Jan 01 00:00:21 2007 +0000
593 589 files: foo
594 590 description:
595 591 addfoo2
596 592
597 593 always: test <test@example.org>
598 594
599 595
600 596 changeset: 0:2ac9bcb3534a
601 597 user: test <test@example.org>
602 598 date: Mon Jan 01 00:00:20 2007 +0000
603 599 files: foo
604 600 description:
605 601 addfoo
606 602
607 603 always: test <test@example.org>
608 604
609 605
610 606
611 607 replaceauthor replaces author with committer
612 608
613 609 $ hg --config convert.git.committeractions=replaceauthor convert git-repo4 git-repo4-hg-replaceauthor
614 610 initializing destination git-repo4-hg-replaceauthor repository
615 611 scanning source...
616 612 sorting...
617 613 converting...
618 614 1 addfoo
619 615 0 addfoo2
620 616 updating bookmarks
621 617
622 618 $ hg -R git-repo4-hg-replaceauthor log -v
623 619 changeset: 1:122c1d8999ea
624 620 bookmark: master
625 621 tag: tip
626 622 user: test <test@example.org>
627 623 date: Mon Jan 01 00:00:21 2007 +0000
628 624 files: foo
629 625 description:
630 626 addfoo2
631 627
632 628
633 629 changeset: 0:0735477b0224
634 630 user: test <test@example.org>
635 631 date: Mon Jan 01 00:00:20 2007 +0000
636 632 files: foo
637 633 description:
638 634 addfoo
639 635
640 636
641 637
642 638 dropcommitter removes the committer
643 639
644 640 $ hg --config convert.git.committeractions=dropcommitter convert git-repo4 git-repo4-hg-dropcommitter
645 641 initializing destination git-repo4-hg-dropcommitter repository
646 642 scanning source...
647 643 sorting...
648 644 converting...
649 645 1 addfoo
650 646 0 addfoo2
651 647 updating bookmarks
652 648
653 649 $ hg -R git-repo4-hg-dropcommitter log -v
654 650 changeset: 1:190b2da396cc
655 651 bookmark: master
656 652 tag: tip
657 653 user: nottest <test@example.org>
658 654 date: Mon Jan 01 00:00:21 2007 +0000
659 655 files: foo
660 656 description:
661 657 addfoo2
662 658
663 659
664 660 changeset: 0:0735477b0224
665 661 user: test <test@example.org>
666 662 date: Mon Jan 01 00:00:20 2007 +0000
667 663 files: foo
668 664 description:
669 665 addfoo
670 666
671 667
672 668
673 669 --sourceorder should fail
674 670
675 671 $ hg convert --sourcesort git-repo4 git-repo4-sourcesort-hg
676 672 initializing destination git-repo4-sourcesort-hg repository
677 673 abort: --sourcesort is not supported by this data source
678 674 [255]
679 675
680 676 test converting certain branches
681 677
682 678 $ mkdir git-testrevs
683 679 $ cd git-testrevs
684 680 $ git init
685 681 Initialized empty Git repository in $TESTTMP/git-testrevs/.git/
686 682 $ echo a >> a ; git add a > /dev/null; git commit -m 'first' > /dev/null
687 683 $ echo a >> a ; git add a > /dev/null; git commit -m 'master commit' > /dev/null
688 684 $ git checkout -b goodbranch 'HEAD^'
689 685 Switched to a new branch 'goodbranch'
690 686 $ echo a >> b ; git add b > /dev/null; git commit -m 'good branch commit' > /dev/null
691 687 $ git checkout -b badbranch 'HEAD^'
692 688 Switched to a new branch 'badbranch'
693 689 $ echo a >> c ; git add c > /dev/null; git commit -m 'bad branch commit' > /dev/null
694 690 $ cd ..
695 691 $ hg convert git-testrevs hg-testrevs --rev master --rev goodbranch
696 692 initializing destination hg-testrevs repository
697 693 scanning source...
698 694 sorting...
699 695 converting...
700 696 2 first
701 697 1 good branch commit
702 698 0 master commit
703 699 updating bookmarks
704 700 $ cd hg-testrevs
705 701 $ hg log -G -T '{rev} {bookmarks}'
706 702 o 2 master
707 703 |
708 704 | o 1 goodbranch
709 705 |/
710 706 o 0
711 707
712 708 $ cd ..
713 709
714 710 test sub modules
715 711
716 712 $ mkdir git-repo5
717 713 $ cd git-repo5
718 714 $ git init >/dev/null 2>/dev/null
719 715 $ echo 'sub' >> foo
720 716 $ git add foo
721 717 $ commit -a -m 'addfoo'
722 718 $ BASE=`pwd`
723 719 $ cd ..
724 720 $ mkdir git-repo6
725 721 $ cd git-repo6
726 722 $ git init >/dev/null 2>/dev/null
727 723 $ git submodule add ${BASE} >/dev/null 2>/dev/null
728 724 $ commit -a -m 'addsubmodule' >/dev/null 2>/dev/null
729 725
730 726 test non-tab whitespace .gitmodules
731 727
732 728 $ cat >> .gitmodules <<EOF
733 729 > [submodule "git-repo5"]
734 730 > path = git-repo5
735 731 > url = git-repo5
736 732 > EOF
737 733 $ git commit -q -a -m "weird white space submodule"
738 734 $ cd ..
739 735 $ hg convert git-repo6 hg-repo6
740 736 initializing destination hg-repo6 repository
741 737 scanning source...
742 738 sorting...
743 739 converting...
744 740 1 addsubmodule
745 741 0 weird white space submodule
746 742 updating bookmarks
747 743
748 744 $ rm -rf hg-repo6
749 745 $ cd git-repo6
750 746 $ git reset --hard 'HEAD^' > /dev/null
751 747
752 748 test missing .gitmodules
753 749
754 750 $ git submodule add ../git-repo4 >/dev/null 2>/dev/null
755 751 $ git checkout HEAD -- .gitmodules
756 752 $ git rm .gitmodules
757 753 rm '.gitmodules'
758 754 $ git commit -q -m "remove .gitmodules" .gitmodules
759 755 $ git commit -q -m "missing .gitmodules"
760 756 $ cd ..
761 757 $ hg convert git-repo6 hg-repo6 --traceback 2>&1 | grep -v "fatal: Path '.gitmodules' does not exist"
762 758 initializing destination hg-repo6 repository
763 759 scanning source...
764 760 sorting...
765 761 converting...
766 762 2 addsubmodule
767 763 1 remove .gitmodules
768 764 0 missing .gitmodules
769 765 warning: cannot read submodules config file in * (glob)
770 766 updating bookmarks
771 767 $ rm -rf hg-repo6
772 768 $ cd git-repo6
773 769 $ rm -rf git-repo4
774 770 $ git reset --hard 'HEAD^^' > /dev/null
775 771 $ cd ..
776 772
777 773 test invalid splicemap1
778 774
779 775 $ cat > splicemap <<EOF
780 776 > $VALIDID1
781 777 > EOF
782 778 $ hg convert --splicemap splicemap git-repo2 git-repo2-splicemap1-hg
783 779 initializing destination git-repo2-splicemap1-hg repository
784 780 abort: syntax error in splicemap(1): child parent1[,parent2] expected
785 781 [255]
786 782
787 783 test invalid splicemap2
788 784
789 785 $ cat > splicemap <<EOF
790 786 > $VALIDID1 $VALIDID2, $VALIDID2, $VALIDID2
791 787 > EOF
792 788 $ hg convert --splicemap splicemap git-repo2 git-repo2-splicemap2-hg
793 789 initializing destination git-repo2-splicemap2-hg repository
794 790 abort: syntax error in splicemap(1): child parent1[,parent2] expected
795 791 [255]
796 792
797 793 test invalid splicemap3
798 794
799 795 $ cat > splicemap <<EOF
800 796 > $INVALIDID1 $INVALIDID2
801 797 > EOF
802 798 $ hg convert --splicemap splicemap git-repo2 git-repo2-splicemap3-hg
803 799 initializing destination git-repo2-splicemap3-hg repository
804 800 abort: splicemap entry afd12345af is not a valid revision identifier
805 801 [255]
806 802
807 803 convert sub modules
808 804 $ hg convert git-repo6 git-repo6-hg
809 805 initializing destination git-repo6-hg repository
810 806 scanning source...
811 807 sorting...
812 808 converting...
813 809 0 addsubmodule
814 810 updating bookmarks
815 811 $ hg -R git-repo6-hg log -v
816 812 changeset: 0:* (glob)
817 813 bookmark: master
818 814 tag: tip
819 815 user: nottest <test@example.org>
820 816 date: Mon Jan 01 00:00:23 2007 +0000
821 817 files: .hgsub .hgsubstate
822 818 description:
823 819 addsubmodule
824 820
825 821 committer: test <test@example.org>
826 822
827 823
828 824
829 825 $ cd git-repo6-hg
830 826 $ hg up >/dev/null 2>/dev/null
831 827 $ cat .hgsubstate
832 828 * git-repo5 (glob)
833 829 $ cd git-repo5
834 830 $ cat foo
835 831 sub
836 832
837 833 $ cd ../..
838 834
839 835 make sure rename detection doesn't break removing and adding gitmodules
840 836
841 837 $ cd git-repo6
842 838 $ git mv .gitmodules .gitmodules-renamed
843 839 $ commit -a -m 'rename .gitmodules'
844 840 $ git mv .gitmodules-renamed .gitmodules
845 841 $ commit -a -m 'rename .gitmodules back'
846 842 $ cd ..
847 843
848 844 $ hg --config convert.git.similarity=100 convert -q git-repo6 git-repo6-hg
849 845 $ hg -R git-repo6-hg log -r 'tip^' -T "{desc|firstline}\n"
850 846 rename .gitmodules
851 847 $ hg -R git-repo6-hg status -C --change 'tip^'
852 848 A .gitmodules-renamed
853 849 R .hgsub
854 850 R .hgsubstate
855 851 $ hg -R git-repo6-hg log -r tip -T "{desc|firstline}\n"
856 852 rename .gitmodules back
857 853 $ hg -R git-repo6-hg status -C --change tip
858 854 A .hgsub
859 855 A .hgsubstate
860 856 R .gitmodules-renamed
861 857
862 858 convert the revision removing '.gitmodules' itself (and related
863 859 submodules)
864 860
865 861 $ cd git-repo6
866 862 $ git rm .gitmodules
867 863 rm '.gitmodules'
868 864 $ git rm --cached git-repo5
869 865 rm 'git-repo5'
870 866 $ commit -a -m 'remove .gitmodules and submodule git-repo5'
871 867 $ cd ..
872 868
873 869 $ hg convert -q git-repo6 git-repo6-hg
874 870 $ hg -R git-repo6-hg tip -T "{desc|firstline}\n"
875 871 remove .gitmodules and submodule git-repo5
876 872 $ hg -R git-repo6-hg tip -T "{file_dels}\n"
877 873 .hgsub .hgsubstate
878 874
879 875 skip submodules in the conversion
880 876
881 877 $ hg convert -q git-repo6 no-submodules --config convert.git.skipsubmodules=True
882 878 $ hg -R no-submodules manifest --all
883 879 .gitmodules-renamed
884 880
885 881 convert using a different remote prefix
886 882 $ git init git-repo7
887 883 Initialized empty Git repository in $TESTTMP/git-repo7/.git/
888 884 $ cd git-repo7
889 885 TODO: it'd be nice to use (?) lines instead of grep -v to handle the
890 886 git output variance, but that doesn't currently work in the middle of
891 887 a block, so do this for now.
892 888 $ touch a && git add a && git commit -am "commit a" | grep -v changed
893 889 [master (root-commit) 8ae5f69] commit a
894 890 Author: nottest <test@example.org>
895 891 create mode 100644 a
896 892 $ cd ..
897 893 $ git clone git-repo7 git-repo7-client
898 894 Cloning into 'git-repo7-client'...
899 895 done.
900 896 $ hg convert --config convert.git.remoteprefix=origin git-repo7-client hg-repo7
901 897 initializing destination hg-repo7 repository
902 898 scanning source...
903 899 sorting...
904 900 converting...
905 901 0 commit a
906 902 updating bookmarks
907 903 $ hg -R hg-repo7 bookmarks
908 904 master 0:03bf38caa4c6
909 905 origin/master 0:03bf38caa4c6
910 906
911 907 Run convert when the remote branches have changed
912 908 (there was an old bug where the local convert read branches from the server)
913 909
914 910 $ cd git-repo7
915 911 $ echo a >> a
916 912 $ git commit -q -am "move master forward"
917 913 $ cd ..
918 914 $ rm -rf hg-repo7
919 915 $ hg convert --config convert.git.remoteprefix=origin git-repo7-client hg-repo7
920 916 initializing destination hg-repo7 repository
921 917 scanning source...
922 918 sorting...
923 919 converting...
924 920 0 commit a
925 921 updating bookmarks
926 922 $ hg -R hg-repo7 bookmarks
927 923 master 0:03bf38caa4c6
928 924 origin/master 0:03bf38caa4c6
929 925
930 926 damaged git repository tests:
931 927 In case the hard-coded hashes change, the following commands can be used to
932 928 list the hashes and their corresponding types in the repository:
933 929 cd git-repo4/.git/objects
934 930 find . -type f | cut -c 3- | sed 's_/__' | xargs -n 1 -t git cat-file -t
935 931 cd ../../..
936 932
937 933 damage git repository by renaming a commit object
938 934 $ COMMIT_OBJ=1c/0ce3c5886f83a1d78a7b517cdff5cf9ca17bdd
939 935 $ mv git-repo4/.git/objects/$COMMIT_OBJ git-repo4/.git/objects/$COMMIT_OBJ.tmp
940 936 $ hg convert git-repo4 git-repo4-broken-hg 2>&1 | grep 'abort:'
941 937 abort: cannot retrieve number of commits in $TESTTMP/git-repo4/.git
942 938 $ mv git-repo4/.git/objects/$COMMIT_OBJ.tmp git-repo4/.git/objects/$COMMIT_OBJ
943 939 damage git repository by renaming a blob object
944 940
945 941 $ BLOB_OBJ=8b/137891791fe96927ad78e64b0aad7bded08bdc
946 942 $ mv git-repo4/.git/objects/$BLOB_OBJ git-repo4/.git/objects/$BLOB_OBJ.tmp
947 943 $ hg convert git-repo4 git-repo4-broken-hg 2>&1 | grep 'abort:'
948 944 abort: cannot read 'blob' object at 8b137891791fe96927ad78e64b0aad7bded08bdc
949 945 $ mv git-repo4/.git/objects/$BLOB_OBJ.tmp git-repo4/.git/objects/$BLOB_OBJ
950 946 damage git repository by renaming a tree object
951 947
952 948 $ TREE_OBJ=72/49f083d2a63a41cc737764a86981eb5f3e4635
953 949 $ mv git-repo4/.git/objects/$TREE_OBJ git-repo4/.git/objects/$TREE_OBJ.tmp
954 950 $ hg convert git-repo4 git-repo4-broken-hg 2>&1 | grep 'abort:'
955 951 abort: cannot read changes in 1c0ce3c5886f83a1d78a7b517cdff5cf9ca17bdd
956 952
957 953 #if no-windows git19
958 954
959 955 test for escaping the repo name (CVE-2016-3069)
960 956
961 957 $ git init '`echo pwned >COMMAND-INJECTION`'
962 958 Initialized empty Git repository in $TESTTMP/`echo pwned >COMMAND-INJECTION`/.git/
963 959 $ cd '`echo pwned >COMMAND-INJECTION`'
964 960 $ git commit -q --allow-empty -m 'empty'
965 961 $ cd ..
966 962 $ hg convert '`echo pwned >COMMAND-INJECTION`' 'converted'
967 963 initializing destination converted repository
968 964 scanning source...
969 965 sorting...
970 966 converting...
971 967 0 empty
972 968 updating bookmarks
973 969 $ test -f COMMAND-INJECTION
974 970 [1]
975 971
976 972 test for safely passing paths to git (CVE-2016-3105)
977 973
978 974 $ git init 'ext::sh -c echo% pwned% >GIT-EXT-COMMAND-INJECTION% #'
979 975 Initialized empty Git repository in $TESTTMP/ext::sh -c echo% pwned% >GIT-EXT-COMMAND-INJECTION% #/.git/
980 976 $ cd 'ext::sh -c echo% pwned% >GIT-EXT-COMMAND-INJECTION% #'
981 977 $ git commit -q --allow-empty -m 'empty'
982 978 $ cd ..
983 979 $ hg convert 'ext::sh -c echo% pwned% >GIT-EXT-COMMAND-INJECTION% #' 'converted-git-ext'
984 980 initializing destination converted-git-ext repository
985 981 scanning source...
986 982 sorting...
987 983 converting...
988 984 0 empty
989 985 updating bookmarks
990 986 $ test -f GIT-EXT-COMMAND-INJECTION
991 987 [1]
992 988
993 989 #endif
994 990
995 991 Conversion of extra commit metadata to extras works
996 992
997 993 $ git init gitextras >/dev/null 2>/dev/null
998 994 $ cd gitextras
999 995 $ touch foo
1000 996 $ git add foo
1001 997 $ commit -m initial
1002 998 $ echo 1 > foo
1003 999 $ tree=`git write-tree`
1004 1000
1005 1001 Git doesn't provider a user-facing API to write extra metadata into the
1006 1002 commit, so create the commit object by hand
1007 1003
1008 1004 $ git hash-object -t commit -w --stdin << EOF
1009 1005 > tree ${tree}
1010 1006 > parent ba6b1344e977ece9e00958dbbf17f1f09384b2c1
1011 1007 > author test <test@example.com> 1000000000 +0000
1012 1008 > committer test <test@example.com> 1000000000 +0000
1013 1009 > extra-1 extra-1
1014 1010 > extra-2 extra-2 with space
1015 1011 > convert_revision 0000aaaabbbbccccddddeeee
1016 1012 >
1017 1013 > message with extras
1018 1014 > EOF
1019 1015 8123727c8361a4117d1a2d80e0c4e7d70c757f18
1020 1016
1021 1017 $ git reset --hard 8123727c8361a4117d1a2d80e0c4e7d70c757f18 > /dev/null
1022 1018
1023 1019 $ cd ..
1024 1020
1025 1021 convert will not retain custom metadata keys by default
1026 1022
1027 1023 $ hg convert gitextras hgextras1
1028 1024 initializing destination hgextras1 repository
1029 1025 scanning source...
1030 1026 sorting...
1031 1027 converting...
1032 1028 1 initial
1033 1029 0 message with extras
1034 1030 updating bookmarks
1035 1031
1036 1032 $ hg -R hgextras1 log --debug -r 1
1037 1033 changeset: 1:e13a39880f68479127b2a80fa0b448cc8524aa09
1038 1034 bookmark: master
1039 1035 tag: tip
1040 1036 phase: draft
1041 1037 parent: 0:dcb68977c55cd02cbd13b901df65c4b6e7b9c4b9
1042 1038 parent: -1:0000000000000000000000000000000000000000
1043 1039 manifest: 0:6a3df4de388f3c4f8e28f4f9a814299a3cbb5f50
1044 1040 user: test <test@example.com>
1045 1041 date: Sun Sep 09 01:46:40 2001 +0000
1046 1042 extra: branch=default
1047 1043 extra: convert_revision=8123727c8361a4117d1a2d80e0c4e7d70c757f18
1048 1044 description:
1049 1045 message with extras
1050 1046
1051 1047
1052 1048
1053 1049 Attempting to convert a banned extra is disallowed
1054 1050
1055 1051 $ hg convert --config convert.git.extrakeys=tree,parent gitextras hgextras-banned
1056 1052 initializing destination hgextras-banned repository
1057 1053 abort: copying of extra key is forbidden: parent, tree
1058 1054 [255]
1059 1055
1060 1056 Converting a specific extra works
1061 1057
1062 1058 $ hg convert --config convert.git.extrakeys=extra-1 gitextras hgextras2
1063 1059 initializing destination hgextras2 repository
1064 1060 scanning source...
1065 1061 sorting...
1066 1062 converting...
1067 1063 1 initial
1068 1064 0 message with extras
1069 1065 updating bookmarks
1070 1066
1071 1067 $ hg -R hgextras2 log --debug -r 1
1072 1068 changeset: 1:d40fb205d58597e6ecfd55b16f198be5bf436391
1073 1069 bookmark: master
1074 1070 tag: tip
1075 1071 phase: draft
1076 1072 parent: 0:dcb68977c55cd02cbd13b901df65c4b6e7b9c4b9
1077 1073 parent: -1:0000000000000000000000000000000000000000
1078 1074 manifest: 0:6a3df4de388f3c4f8e28f4f9a814299a3cbb5f50
1079 1075 user: test <test@example.com>
1080 1076 date: Sun Sep 09 01:46:40 2001 +0000
1081 1077 extra: branch=default
1082 1078 extra: convert_revision=8123727c8361a4117d1a2d80e0c4e7d70c757f18
1083 1079 extra: extra-1=extra-1
1084 1080 description:
1085 1081 message with extras
1086 1082
1087 1083
1088 1084
1089 1085 Converting multiple extras works
1090 1086
1091 1087 $ hg convert --config convert.git.extrakeys=extra-1,extra-2 gitextras hgextras3
1092 1088 initializing destination hgextras3 repository
1093 1089 scanning source...
1094 1090 sorting...
1095 1091 converting...
1096 1092 1 initial
1097 1093 0 message with extras
1098 1094 updating bookmarks
1099 1095
1100 1096 $ hg -R hgextras3 log --debug -r 1
1101 1097 changeset: 1:0105af33379e7b6491501fd34141b7af700fe125
1102 1098 bookmark: master
1103 1099 tag: tip
1104 1100 phase: draft
1105 1101 parent: 0:dcb68977c55cd02cbd13b901df65c4b6e7b9c4b9
1106 1102 parent: -1:0000000000000000000000000000000000000000
1107 1103 manifest: 0:6a3df4de388f3c4f8e28f4f9a814299a3cbb5f50
1108 1104 user: test <test@example.com>
1109 1105 date: Sun Sep 09 01:46:40 2001 +0000
1110 1106 extra: branch=default
1111 1107 extra: convert_revision=8123727c8361a4117d1a2d80e0c4e7d70c757f18
1112 1108 extra: extra-1=extra-1
1113 1109 extra: extra-2=extra-2 with space
1114 1110 description:
1115 1111 message with extras
1116 1112
1117 1113
1118 1114
1119 1115 convert.git.saverev can be disabled to prevent convert_revision from being written
1120 1116
1121 1117 $ hg convert --config convert.git.saverev=false gitextras hgextras4
1122 1118 initializing destination hgextras4 repository
1123 1119 scanning source...
1124 1120 sorting...
1125 1121 converting...
1126 1122 1 initial
1127 1123 0 message with extras
1128 1124 updating bookmarks
1129 1125
1130 1126 $ hg -R hgextras4 log --debug -r 1
1131 1127 changeset: 1:1dcaf4ffe5bee43fa86db2800821f6f0af212c5c
1132 1128 bookmark: master
1133 1129 tag: tip
1134 1130 phase: draft
1135 1131 parent: 0:a13935fec4daf06a5a87a7307ccb0fc94f98d06d
1136 1132 parent: -1:0000000000000000000000000000000000000000
1137 1133 manifest: 0:6a3df4de388f3c4f8e28f4f9a814299a3cbb5f50
1138 1134 user: test <test@example.com>
1139 1135 date: Sun Sep 09 01:46:40 2001 +0000
1140 1136 extra: branch=default
1141 1137 description:
1142 1138 message with extras
1143 1139
1144 1140
1145 1141
1146 1142 convert.git.saverev and convert.git.extrakeys can be combined to preserve
1147 1143 convert_revision from source
1148 1144
1149 1145 $ hg convert --config convert.git.saverev=false --config convert.git.extrakeys=convert_revision gitextras hgextras5
1150 1146 initializing destination hgextras5 repository
1151 1147 scanning source...
1152 1148 sorting...
1153 1149 converting...
1154 1150 1 initial
1155 1151 0 message with extras
1156 1152 updating bookmarks
1157 1153
1158 1154 $ hg -R hgextras5 log --debug -r 1
1159 1155 changeset: 1:574d85931544d4542007664fee3747360e85ee28
1160 1156 bookmark: master
1161 1157 tag: tip
1162 1158 phase: draft
1163 1159 parent: 0:a13935fec4daf06a5a87a7307ccb0fc94f98d06d
1164 1160 parent: -1:0000000000000000000000000000000000000000
1165 1161 manifest: 0:6a3df4de388f3c4f8e28f4f9a814299a3cbb5f50
1166 1162 user: test <test@example.com>
1167 1163 date: Sun Sep 09 01:46:40 2001 +0000
1168 1164 extra: branch=default
1169 1165 extra: convert_revision=0000aaaabbbbccccddddeeee
1170 1166 description:
1171 1167 message with extras
1172 1168
1173 1169
General Comments 0
You need to be logged in to leave comments. Login now