##// END OF EJS Templates
eol: rename 'error' to 'haserror'...
eol: rename 'error' to 'haserror' The variable 'error' conflict with the module name that we would like to import and use in a coming changeset.

File last commit:

r24787:9d5c2789 default
r26586:d51c658d default
Show More
test-issue3084.t
405 lines | 9.9 KiB | text/troff | Tads3Lexer
Martin Geisler
largefiles: handle merges between normal files and largefiles (issue3084)...
r15663
$ echo "[extensions]" >> $HGRCPATH
$ echo "largefiles =" >> $HGRCPATH
Create the repository outside $HOME since largefiles write to
$HOME/.cache/largefiles.
$ hg init test
$ cd test
$ echo "root" > root
$ hg add root
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 $ hg commit -m "Root commit" --config extensions.largefiles=!
Ensure that .hg/largefiles isn't created before largefiles are added
#if unix-permissions
$ chmod 555 .hg
#endif
$ hg status
#if unix-permissions
$ chmod 755 .hg
#endif
$ test -f .hg/largefiles
[1]
Martin Geisler
largefiles: handle merges between normal files and largefiles (issue3084)...
r15663
$ echo "large" > foo
$ hg add --large foo
$ hg commit -m "Add foo as a largefile"
$ hg update -r 0
getting changed largefiles
0 largefiles updated, 1 removed
Benoit Boissinot
largefiles: fix largefiles+subrepo update (issue3752)...
r18459 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
Martin Geisler
largefiles: handle merges between normal files and largefiles (issue3084)...
r15663
$ echo "normal" > foo
$ hg add foo
$ hg commit -m "Add foo as normal file"
created new head
Normal file in the working copy, keeping the normal version:
$ echo "n" | hg merge --config ui.interactive=Yes
Mads Kiilerich
largefiles: use 'remote'/'local' in merge prompts like in other merge prompts...
r19967 remote turned local normal file foo into a largefile
Mads Kiilerich
ui: show prompt choice if input is not a tty but is forced to be interactive...
r22589 use (l)argefile or keep (n)ormal file? n
Martin von Zweigbergk
largefiles: don't use 'r' action for standin that doesn't exist...
r23493 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
Martin Geisler
largefiles: handle merges between normal files and largefiles (issue3084)...
r15663 (branch merge, don't forget to commit)
$ hg status
$ cat foo
normal
Normal file in the working copy, keeping the largefile version:
$ hg update -q -C
$ echo "l" | hg merge --config ui.interactive=Yes
Mads Kiilerich
largefiles: use 'remote'/'local' in merge prompts like in other merge prompts...
r19967 remote turned local normal file foo into a largefile
Mads Kiilerich
ui: show prompt choice if input is not a tty but is forced to be interactive...
r22589 use (l)argefile or keep (n)ormal file? l
getting changed largefiles
FUJIWARA Katsunori
largefiles: update largefiles even if rebase is aborted by conflict...
r22288 1 largefiles updated, 0 removed
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
Martin Geisler
largefiles: handle merges between normal files and largefiles (issue3084)...
r15663 (branch merge, don't forget to commit)
$ hg status
M foo
$ hg diff --nodates
diff -r fa129ab6b5a7 .hglf/foo
--- /dev/null
+++ b/.hglf/foo
@@ -0,0 +1,1 @@
+7f7097b041ccf68cc5561e9600da4655d21c6d18
diff -r fa129ab6b5a7 foo
--- a/foo
+++ /dev/null
@@ -1,1 +0,0 @@
-normal
$ cat foo
large
Largefile in the working copy, keeping the normal version:
$ hg update -q -C -r 1
$ echo "n" | hg merge --config ui.interactive=Yes
Mads Kiilerich
largefiles: use 'remote'/'local' in merge prompts like in other merge prompts...
r19967 remote turned local largefile foo into a normal file
Mads Kiilerich
ui: show prompt choice if input is not a tty but is forced to be interactive...
r22589 keep (l)argefile or use (n)ormal file? n
getting changed largefiles
FUJIWARA Katsunori
largefiles: update largefiles even if rebase is aborted by conflict...
r22288 0 largefiles updated, 0 removed
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
Martin Geisler
largefiles: handle merges between normal files and largefiles (issue3084)...
r15663 (branch merge, don't forget to commit)
$ hg status
M foo
$ hg diff --nodates
diff -r ff521236428a .hglf/foo
--- a/.hglf/foo
+++ /dev/null
@@ -1,1 +0,0 @@
-7f7097b041ccf68cc5561e9600da4655d21c6d18
diff -r ff521236428a foo
--- /dev/null
+++ b/foo
@@ -0,0 +1,1 @@
+normal
$ cat foo
normal
Largefile in the working copy, keeping the largefile version:
$ hg update -q -C -r 1
$ echo "l" | hg merge --config ui.interactive=Yes
Mads Kiilerich
largefiles: use 'remote'/'local' in merge prompts like in other merge prompts...
r19967 remote turned local largefile foo into a normal file
Mads Kiilerich
ui: show prompt choice if input is not a tty but is forced to be interactive...
r22589 keep (l)argefile or use (n)ormal file? l
Martin von Zweigbergk
largefiles: don't use 'r' action for normal file that doesn't exist...
r23492 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
Martin Geisler
largefiles: handle merges between normal files and largefiles (issue3084)...
r15663 (branch merge, don't forget to commit)
$ hg status
$ cat foo
large
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
Mads Kiilerich
largefiles: don't prompt for normal/largefile changes when doing plain updates...
r19954 Whatever ... commit something so we can invoke merge when updating
$ hg commit -m '3: Merge'
Updating from largefile to normal - no reason to prompt
$ hg up -r 2
getting changed largefiles
0 largefiles updated, 0 removed
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ cat foo
normal
(the update above used to leave the working dir in a very weird state - clean it
$ hg up -qr null
$ hg up -qr 2
)
Updating from normal to largefile - no reason to prompt
$ hg up -r 3
getting changed largefiles
1 largefiles updated, 0 removed
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ cat foo
large
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913 $ cd ..
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966
Systematic testing of merges involving largefiles:
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 Ancestor: normal Parent: normal-id Parent: large result: large
Ancestor: normal Parent: normal2 Parent: large result: ?
Ancestor: large Parent: large-id Parent: normal result: normal
Ancestor: large Parent: large2 Parent: normal result: ?
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966
All cases should try merging both ways.
Prepare test repo:
$ hg init merges
$ cd merges
Matt Harbison
largefiles: avoid unnecessary creation of .hg/largefiles when opening lfdirstate...
r21917
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 prepare cases with "normal" ancestor:
Matt Harbison
largefiles: avoid unnecessary creation of .hg/largefiles when opening lfdirstate...
r21917
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 $ hg up -qr null
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 $ echo normal > f
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 $ hg ci -Aqm "normal-ancestor"
$ hg tag -l "normal-ancestor"
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 $ touch f2
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 $ hg ci -Aqm "normal-id"
$ hg tag -l "normal-id"
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 $ echo normal2 > f
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 $ hg ci -m "normal2"
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 $ hg tag -l "normal2"
Mads Kiilerich
tests: add test-issue3084.t cases for 'changed but same' as for 'unchanged'...
r23418 $ echo normal > f
$ hg ci -Aqm "normal-same"
$ hg tag -l "normal-same"
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 $ hg up -qr "normal-ancestor"
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 $ hg rm f
$ echo large > f
$ hg add --large f
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 $ hg ci -qm "large"
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 $ hg tag -l "large"
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 prepare cases with "large" ancestor:
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 $ hg up -qr null
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 $ echo large > f
$ hg add --large f
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 $ hg ci -qm "large-ancestor"
$ hg tag -l "large-ancestor"
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 $ touch f2
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 $ hg ci -Aqm "large-id"
$ hg tag -l "large-id"
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 $ echo large2 > f
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 $ hg ci -m "large2"
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 $ hg tag -l "large2"
Mads Kiilerich
tests: add test-issue3084.t cases for 'changed but same' as for 'unchanged'...
r23418 $ echo large > f
$ hg ci -Aqm "large-same"
$ hg tag -l "large-same"
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 $ hg up -qr "large-ancestor"
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 $ hg rm f
$ echo normal > f
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 $ hg ci -qAm "normal"
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 $ hg tag -l "normal"
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 $ hg log -GT '{tags}'
@ normal tip
|
Mads Kiilerich
tests: add test-issue3084.t cases for 'changed but same' as for 'unchanged'...
r23418 | o large-same
| |
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 | o large2
| |
| o large-id
|/
o large-ancestor
o large
|
Mads Kiilerich
tests: add test-issue3084.t cases for 'changed but same' as for 'unchanged'...
r23418 | o normal-same
| |
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 | o normal2
| |
| o normal-id
|/
o normal-ancestor
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417
Ancestor: normal Parent: normal-id Parent: large result: large
$ hg up -Cqr normal-id
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 $ hg merge -r large
FUJIWARA Katsunori
largefiles: update largefiles even if rebase is aborted by conflict...
r22288 getting changed largefiles
1 largefiles updated, 0 removed
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ cat f
large
swap
$ hg up -Cqr large
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 $ hg merge -r normal-id
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ cat f
large
Mads Kiilerich
tests: add test-issue3084.t cases for 'changed but same' as for 'unchanged'...
r23418 Ancestor: normal Parent: normal-same Parent: large result: large
$ hg up -Cqr normal-same
$ hg merge -r large
getting changed largefiles
1 largefiles updated, 0 removed
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ cat f
large
swap
$ hg up -Cqr large
$ hg merge -r normal-same
Mads Kiilerich
merge: before cd/dc prompt, check that changed side really changed...
r23420 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Mads Kiilerich
tests: add test-issue3084.t cases for 'changed but same' as for 'unchanged'...
r23418 (branch merge, don't forget to commit)
$ cat f
large
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 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
Mads Kiilerich
largefiles: use 'remote'/'local' in merge prompts like in other merge prompts...
r19967 remote turned local normal file f into a largefile
use (l)argefile or keep (n)ormal file? l
FUJIWARA Katsunori
largefiles: update largefiles even if rebase is aborted by conflict...
r22288 getting changed largefiles
1 largefiles updated, 0 removed
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ cat f
large
$ hg up -Cqr normal2
Martin von Zweigbergk
merge: move cd/dc prompts after largefiles prompts...
r23541 $ echo n | hg merge -r large --config ui.interactive=Yes
Mads Kiilerich
ui: show prompt choice if input is not a tty but is forced to be interactive...
r22589 remote turned local normal file f into a largefile
use (l)argefile or keep (n)ormal file? n
Martin von Zweigbergk
largefiles: don't use 'r' action for standin that doesn't exist...
r23493 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 (branch merge, don't forget to commit)
$ cat f
normal2
swap
$ hg up -Cqr large
$ hg merge -r normal2
Mads Kiilerich
largefiles: use 'remote'/'local' in merge prompts like in other merge prompts...
r19967 remote turned local largefile f into a normal file
keep (l)argefile or use (n)ormal file? l
Martin von Zweigbergk
largefiles: don't use 'r' action for normal file that doesn't exist...
r23492 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 (branch merge, don't forget to commit)
$ cat f
large
$ hg up -Cqr large
Martin von Zweigbergk
merge: move cd/dc prompts after largefiles prompts...
r23541 $ echo n | hg merge -r normal2 --config ui.interactive=Yes
Mads Kiilerich
ui: show prompt choice if input is not a tty but is forced to be interactive...
r22589 remote turned local largefile f into a normal file
keep (l)argefile or use (n)ormal file? n
getting changed largefiles
FUJIWARA Katsunori
largefiles: update largefiles even if rebase is aborted by conflict...
r22288 0 largefiles updated, 0 removed
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 (branch merge, don't forget to commit)
$ cat f
normal2
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 Ancestor: large Parent: large-id Parent: normal result: normal
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 $ hg up -Cqr large-id
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 $ hg merge -r normal
FUJIWARA Katsunori
largefiles: update largefiles even if rebase is aborted by conflict...
r22288 getting changed largefiles
0 largefiles updated, 0 removed
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ cat f
normal
swap
$ hg up -Cqr normal
Mads Kiilerich
tests: clean-up of largefiles tests in test-issue3084.t...
r23417 $ hg merge -r large-id
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ cat f
normal
Mads Kiilerich
tests: add test-issue3084.t cases for 'changed but same' as for 'unchanged'...
r23418 Ancestor: large Parent: large-same Parent: normal result: normal
$ hg up -Cqr large-same
$ hg merge -r normal
getting changed largefiles
Mads Kiilerich
largefiles: don't show largefile/normal prompts if one side is unchanged
r23419 0 largefiles updated, 0 removed
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
Mads Kiilerich
tests: add test-issue3084.t cases for 'changed but same' as for 'unchanged'...
r23418 (branch merge, don't forget to commit)
$ cat f
Mads Kiilerich
largefiles: don't show largefile/normal prompts if one side is unchanged
r23419 normal
Mads Kiilerich
tests: add test-issue3084.t cases for 'changed but same' as for 'unchanged'...
r23418
swap
$ hg up -Cqr normal
$ hg merge -r large-same
Mads Kiilerich
merge: before cd/dc prompt, check that changed side really changed...
r23420 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Mads Kiilerich
tests: add test-issue3084.t cases for 'changed but same' as for 'unchanged'...
r23418 (branch merge, don't forget to commit)
$ cat f
Mads Kiilerich
largefiles: don't show largefile/normal prompts if one side is unchanged
r23419 normal
Mads Kiilerich
tests: add test-issue3084.t cases for 'changed but same' as for 'unchanged'...
r23418
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 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
Mads Kiilerich
largefiles: use 'remote'/'local' in merge prompts like in other merge prompts...
r19967 remote turned local largefile f into a normal file
keep (l)argefile or use (n)ormal file? l
Martin von Zweigbergk
largefiles: don't use 'r' action for normal file that doesn't exist...
r23492 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 (branch merge, don't forget to commit)
$ cat f
large2
$ hg up -Cqr large2
Martin von Zweigbergk
merge: move cd/dc prompts after largefiles prompts...
r23541 $ echo n | hg merge -r normal --config ui.interactive=Yes
remote turned local largefile f into a normal file
keep (l)argefile or use (n)ormal file? n
Mads Kiilerich
ui: show prompt choice if input is not a tty but is forced to be interactive...
r22589 getting changed largefiles
FUJIWARA Katsunori
largefiles: update largefiles even if rebase is aborted by conflict...
r22288 0 largefiles updated, 0 removed
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 (branch merge, don't forget to commit)
$ cat f
normal
swap
$ hg up -Cqr normal
$ hg merge -r large2
Mads Kiilerich
largefiles: use 'remote'/'local' in merge prompts like in other merge prompts...
r19967 remote turned local normal file f into a largefile
use (l)argefile or keep (n)ormal file? l
FUJIWARA Katsunori
largefiles: update largefiles even if rebase is aborted by conflict...
r22288 getting changed largefiles
1 largefiles updated, 0 removed
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 2 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ cat f
large2
$ hg up -Cqr normal
Martin von Zweigbergk
merge: move cd/dc prompts after largefiles prompts...
r23541 $ echo n | hg merge -r large2 --config ui.interactive=Yes
remote turned local normal file f into a largefile
use (l)argefile or keep (n)ormal file? n
Mads Kiilerich
ui: show prompt choice if input is not a tty but is forced to be interactive...
r22589 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Mads Kiilerich
largefiles: systematic testing of merges to/from largefiles...
r19966 (branch merge, don't forget to commit)
$ cat f
normal
$ cd ..