Show More
@@ -369,10 +369,6 def overrideupdate(orig, ui, repo, *pats | |||||
369 | lfdirstate.write() |
|
369 | lfdirstate.write() | |
370 | if mod: |
|
370 | if mod: | |
371 | raise util.Abort(_('uncommitted changes')) |
|
371 | raise util.Abort(_('uncommitted changes')) | |
372 | # XXX handle removed differently |
|
|||
373 | if not opts['clean']: |
|
|||
374 | for lfile in unsure + modified + added: |
|
|||
375 | lfutil.updatestandin(repo, lfutil.standin(lfile)) |
|
|||
376 | return orig(ui, repo, *pats, **opts) |
|
372 | return orig(ui, repo, *pats, **opts) | |
377 | finally: |
|
373 | finally: | |
378 | wlock.release() |
|
374 | wlock.release() | |
@@ -727,6 +723,14 def hgupdaterepo(orig, repo, node, overw | |||||
727 |
|
723 | |||
728 | def _hgupdaterepo(orig, repo, node, overwrite): |
|
724 | def _hgupdaterepo(orig, repo, node, overwrite): | |
729 | if not overwrite: |
|
725 | if not overwrite: | |
|
726 | # update standins for linear merge | |||
|
727 | lfdirstate = lfutil.openlfdirstate(repo.ui, repo) | |||
|
728 | s = lfdirstate.status(match_.always(repo.root, repo.getcwd()), | |||
|
729 | [], False, False, False) | |||
|
730 | unsure, modified, added = s[:3] | |||
|
731 | for lfile in unsure + modified + added: | |||
|
732 | lfutil.updatestandin(repo, lfutil.standin(lfile)) | |||
|
733 | ||||
730 | # Only call updatelfiles on the standins that have changed to save time |
|
734 | # Only call updatelfiles on the standins that have changed to save time | |
731 | oldstandins = lfutil.getstandinsstate(repo) |
|
735 | oldstandins = lfutil.getstandinsstate(repo) | |
732 |
|
736 |
@@ -323,5 +323,136 Test a linear merge to a revision contai | |||||
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 .. |
General Comments 0
You need to be logged in to leave comments.
Login now