comparison tests/test-largefiles-update.t @ 22287:f3ac9677fa2b

largefiles: move "updatestandin" invocation to "hg.updaterepo" wrapper Code paths below expect "hg.updaterepo" (or "hg.update" using it) to execute linear merging: - "update" in commands - "postincoming" in commands, used for: - "hg pull --update" - "hg unbundle --update" - "hgsubrepo.get" in subrepo For linear merging with largefiles, standins should be updated according to (possibly dirty) largefiles before "merge.update" invocation to detect conflicts correctly. Before this patch, only the "update" command can execute linear merging correctly, because largefiles extension takes care of only it. This patch moves "updatestandin" invocation from "overrideupdate" ("hg update" wrapper) to "_hgupdaterepo" ("hg.updaterepo" wrapper) to execute linear merging in "hg.updaterepo" correctly. This is also a preparation to centralize the logic of updating largefiles in the working directory into the function wrapping "merge.update" in the subsequent patch.
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Sun, 24 Aug 2014 23:47:26 +0900
parents 3f3b9483e7ef
children 4e2559841d6c
comparison
equal deleted inserted replaced
22286:3f3b9483e7ef 22287:f3ac9677fa2b
321 r 0 0 large3 321 r 0 0 large3
322 $ hg status -A large3 322 $ hg status -A large3
323 A large3 323 A large3
324 $ cat large3 324 $ cat large3
325 large3 as large file for linear merge 325 large3 as large file for linear merge
326 $ rm -f large3 .hglf/large3
327
328 Test that the internal linear merging works correctly
329 (both heads are stripped to keep pairing of revision number and commit log)
330
331 $ hg update -q -C 2
332 $ hg strip 3 4
333 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/9530e27857f7-backup.hg (glob)
334 $ mv .hg/strip-backup/9530e27857f7-backup.hg $TESTTMP
335
336 (internal linear merging at "hg pull --update")
337
338 $ echo 'large1 for linear merge (conflict)' > large1
339 $ echo 'large2 for linear merge (conflict with normal file)' > large2
340 $ hg pull --update --config debug.dirstate.delaywrite=2 $TESTTMP/9530e27857f7-backup.hg
341 pulling from $TESTTMP/9530e27857f7-backup.hg (glob)
342 searching for changes
343 adding changesets
344 adding manifests
345 adding file changes
346 added 3 changesets with 5 changes to 5 files
347 local changed .hglf/large2 which remote deleted
348 use (c)hanged version or (d)elete? c
349 remote turned local largefile large2 into a normal file
350 keep (l)argefile or use (n)ormal file? l
351 largefile large1 has a merge conflict
352 ancestor was 4669e532d5b2c093a78eca010077e708a071bb64
353 keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or
354 take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? l
355 2 files updated, 1 files merged, 0 files removed, 0 files unresolved
356
357 $ hg status -A large1
358 M large1
359 $ cat large1
360 large1 for linear merge (conflict)
361 $ cat .hglf/large1
362 ba94c2efe5b7c5e0af8d189295ce00553b0612b7
363 $ hg status -A large2
364 A large2
365 $ cat large2
366 large2 for linear merge (conflict with normal file)
367 $ cat .hglf/large2
368 d7591fe9be0f6227d90bddf3e4f52ff41fc1f544
369
370 (internal linear merging at "hg unbundle --update")
371
372 $ hg update -q -C 2
373 $ hg rollback -q
374
375 $ echo 'large1 for linear merge (conflict)' > large1
376 $ echo 'large2 for linear merge (conflict with normal file)' > large2
377 $ hg unbundle --update --config debug.dirstate.delaywrite=2 $TESTTMP/9530e27857f7-backup.hg
378 adding changesets
379 adding manifests
380 adding file changes
381 added 3 changesets with 5 changes to 5 files
382 local changed .hglf/large2 which remote deleted
383 use (c)hanged version or (d)elete? c
384 remote turned local largefile large2 into a normal file
385 keep (l)argefile or use (n)ormal file? l
386 largefile large1 has a merge conflict
387 ancestor was 4669e532d5b2c093a78eca010077e708a071bb64
388 keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or
389 take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? l
390 2 files updated, 1 files merged, 0 files removed, 0 files unresolved
391
392 $ hg status -A large1
393 M large1
394 $ cat large1
395 large1 for linear merge (conflict)
396 $ cat .hglf/large1
397 ba94c2efe5b7c5e0af8d189295ce00553b0612b7
398 $ hg status -A large2
399 A large2
400 $ cat large2
401 large2 for linear merge (conflict with normal file)
402 $ cat .hglf/large2
403 d7591fe9be0f6227d90bddf3e4f52ff41fc1f544
404
405 (internal linear merging in subrepo at "hg update")
326 406
327 $ cd .. 407 $ cd ..
408 $ hg init subparent
409 $ cd subparent
410
411 $ hg clone -q -u 2 ../repo sub
412 $ cat > .hgsub <<EOF
413 > sub = sub
414 > EOF
415 $ hg add .hgsub
416 $ hg commit -m '#0@parent'
417 $ cat .hgsubstate
418 f74e50bd9e5594b7cf1e6c5cbab86ddd25f3ca2f sub
419 $ hg -R sub update -q
420 $ hg commit -m '#1@parent'
421 $ cat .hgsubstate
422 d65e59e952a9638e2ce863b41a420ca723dd3e8d sub
423 $ hg update -q 0
424
425 $ echo 'large1 for linear merge (conflict)' > sub/large1
426 $ echo 'large2 for linear merge (conflict with normal file)' > sub/large2
427 $ hg update --config ui.interactive=True --config debug.dirstate.delaywrite=2 <<EOF
428 > m
429 > r
430 > c
431 > l
432 > l
433 > EOF
434 subrepository sub diverged (local revision: f74e50bd9e55, remote revision: d65e59e952a9)
435 (M)erge, keep (l)ocal or keep (r)emote? subrepository sources for sub differ (in checked out version)
436 use (l)ocal source (f74e50bd9e55) or (r)emote source (d65e59e952a9)?
437 local changed .hglf/large2 which remote deleted
438 use (c)hanged version or (d)elete? remote turned local largefile large2 into a normal file
439 keep (l)argefile or use (n)ormal file? largefile large1 has a merge conflict
440 ancestor was 4669e532d5b2c093a78eca010077e708a071bb64
441 keep (l)ocal ba94c2efe5b7c5e0af8d189295ce00553b0612b7 or
442 take (o)ther e5bb990443d6a92aaf7223813720f7566c9dd05b? 2 files updated, 1 files merged, 0 files removed, 0 files unresolved
443 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
444
445 $ hg -R sub status -A sub/large1
446 M sub/large1
447 $ cat sub/large1
448 large1 for linear merge (conflict)
449 $ cat sub/.hglf/large1
450 ba94c2efe5b7c5e0af8d189295ce00553b0612b7
451 $ hg -R sub status -A sub/large2
452 A sub/large2
453 $ cat sub/large2
454 large2 for linear merge (conflict with normal file)
455 $ cat sub/.hglf/large2
456 d7591fe9be0f6227d90bddf3e4f52ff41fc1f544
457
458 $ cd ..