diff --git a/tests/test-issue3084.t b/tests/test-issue3084.t --- a/tests/test-issue3084.t +++ b/tests/test-issue3084.t @@ -137,3 +137,221 @@ Updating from normal to largefile - no r large $ cd .. + + +Systematic testing of merges involving largefiles: + +Ancestor: normal Parent: normal= Parent: large result: large +Ancestor: normal Parent: normal2 Parent: large result: ? +Ancestor: large Parent: large= Parent: normal result: normal +Ancestor: large Parent: large2 Parent: normal result: ? + +All cases should try merging both ways. +"=" means same file content. + +Prepare test repo: + + $ hg init merges + $ cd merges + $ touch f1 + $ hg ci -Aqm "0-root" + +ancestor is "normal": + $ echo normal > f + $ hg ci -Aqm "1-normal-ancestor" + $ touch f2 + $ hg ci -Aqm "2-normal-unchanged" + $ hg tag -l "normal=" + $ echo normal2 > f + $ hg ci -m "3-normal2" + $ hg tag -l "normal2" + $ hg up -qr 1 + $ hg rm f + $ echo large > f + $ hg add --large f + $ hg ci -qm "4-normal-to-large" + $ hg tag -l "large" + + $ hg up -qr null + +ancestor is "large": + $ echo large > f + $ hg add --large f + $ hg ci -qm "5-large-ancestor" + $ touch f2 + $ hg ci -Aqm "6-large-unchanged" + $ hg tag -l "large=" + $ echo large2 > f + $ hg ci -m "7-large2" + $ hg tag -l "large2" + $ hg up -qr 5 + $ hg rm f + $ echo normal > f + $ hg ci -qAm "8-large-to-normal" + $ hg tag -l "normal" + +Ancestor: normal Parent: normal= Parent: large result: large + + $ hg up -Cqr normal= + $ hg merge -r large + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 1 largefiles updated, 0 removed + $ cat f + large + +swap + + $ hg up -Cqr large + $ hg merge -r normal= + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 0 largefiles updated, 0 removed + $ cat f + large + +Ancestor: normal Parent: normal2 Parent: large result: ? +(annoying extra prompt ... but it do not do any serious harm) + + $ hg up -Cqr normal2 + $ hg merge -r large + local changed f which remote deleted + use (c)hanged version or (d)elete? c + f has been turned into a largefile + use (l)argefile or keep as (n)ormal file? l + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 1 largefiles updated, 0 removed + $ cat f + large + + $ hg up -Cqr normal2 + $ ( echo c; echo n ) | hg merge -r large --config ui.interactive=Yes + local changed f which remote deleted + use (c)hanged version or (d)elete? f has been turned into a largefile + use (l)argefile or keep as (n)ormal file? 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 0 largefiles updated, 0 removed + $ cat f + normal2 + + $ hg up -Cqr normal2 + $ echo d | hg merge -r large --config ui.interactive=Yes + local changed f which remote deleted + use (c)hanged version or (d)elete? 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 1 largefiles updated, 0 removed + $ cat f + large + +swap + + $ hg up -Cqr large + $ hg merge -r normal2 + remote changed f which local deleted + use (c)hanged version or leave (d)eleted? c + f has been turned into a normal file + keep as (l)argefile or use (n)ormal file? l + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 1 largefiles updated, 0 removed + $ cat f + large + + $ hg up -Cqr large + $ ( echo c; echo n ) | hg merge -r normal2 --config ui.interactive=Yes + remote changed f which local deleted + use (c)hanged version or leave (d)eleted? f has been turned into a normal file + keep as (l)argefile or use (n)ormal file? 2 files updated, 0 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 0 largefiles updated, 0 removed + $ cat f + normal2 + + $ hg up -Cqr large + $ echo d | hg merge -r normal2 --config ui.interactive=Yes + remote changed f which local deleted + use (c)hanged version or leave (d)eleted? 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 0 largefiles updated, 0 removed + $ cat f + large + +Ancestor: large Parent: large= Parent: normal result: normal + + $ hg up -Cqr large= + $ hg merge -r normal + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 0 largefiles updated, 0 removed + $ cat f + normal + +swap + + $ hg up -Cqr normal + $ hg merge -r large= + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + $ cat f + normal + +Ancestor: large Parent: large2 Parent: normal result: ? +(annoying extra prompt ... but it do not do any serious harm) + + $ hg up -Cqr large2 + $ hg merge -r normal + local changed .hglf/f which remote deleted + use (c)hanged version or (d)elete? c + f has been turned into a normal file + keep as (l)argefile or use (n)ormal file? l + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 1 largefiles updated, 0 removed + $ cat f + large2 + + $ hg up -Cqr large2 + $ echo d | hg merge -r normal --config ui.interactive=Yes + local changed .hglf/f which remote deleted + use (c)hanged version or (d)elete? 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 0 largefiles updated, 0 removed + $ cat f + normal + +swap + + $ hg up -Cqr normal + $ hg merge -r large2 + remote changed .hglf/f which local deleted + use (c)hanged version or leave (d)eleted? c + f has been turned into a largefile + use (l)argefile or keep as (n)ormal file? l + 2 files updated, 0 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 1 largefiles updated, 0 removed + $ cat f + large2 + + $ hg up -Cqr normal + $ echo d | hg merge -r large2 --config ui.interactive=Yes + remote changed .hglf/f which local deleted + use (c)hanged version or leave (d)eleted? 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + $ cat f + normal + + $ cd ..