##// END OF EJS Templates
largefiles: access to specific fields only if largefiles enabled (issue4547)...
largefiles: access to specific fields only if largefiles enabled (issue4547) Even if largefiles extension is enabled in a repository, "repo" object, which isn't "largefiles.reposetup()"-ed, is passed to overridden functions in the cases below unexpectedly, because extensions are enabled for each repositories strictly. (1) clone without -U: (2) pull with -U: (3) pull with --rebase: combination of "enabled@src", "disabled@dst" and "not-required@src" cause this situation. largefiles requirement @src @dst @src result -------- -------- --------------- -------------------- enabled disabled not-required aborted unexpectedly required requirement error (intentional) -------- -------- --------------- -------------------- enabled enabled * success -------- -------- --------------- -------------------- disabled enabled * success (only for "pull") -------- -------- --------------- -------------------- disabled disabled not-required success required requirement error (intentional) -------- -------- --------------- -------------------- (4) update/revert with a subrepo disabling largefiles In these cases, overridden functions cause accessing to largefiles specific fields of not "largefiles.reposetup()"-ed "repo" object, and execution is aborted. - (1), (2), (4) cause accessing to "_lfstatuswriters" in "getstatuswriter()" invoked via "updatelfiles()" - (3) causes accessing to "_lfcommithooks" in "overriderebase()" For safe accessing to these fields, this patch examines whether passed "repo" object is "largefiles.reposetup()"-ed or not before accessing to them. This patch chooses examining existence of newly introduced "_largefilesenabled" instead of "_lfcommithooks" and "_lfstatuswriters" directly, because the former is better name for the generic "largefiles is enabled in this repo" mark than the latter. In the future, all other overridden functions should avoid largefiles specific processing for efficiency, and "_largefilesenabled" is better also for such purpose. BTW, "lfstatus" can't be used for such purpose, because some code paths set it forcibly regardless of existence of it in specified "repo" object.

File last commit:

r22046:7a9cbb31 default
r24158:d414c28d stable
Show More
test-flags.t
154 lines | 3.8 KiB | text/troff | Tads3Lexer
Matt Mackall
tests: replace exit 80 with #require
r22046 #require execbit
Mads Kiilerich
tests: use 'hghave execbit' for tests that manipulate x bit in file system
r15442
Nicolas Dumazet
tests: unify test-flags
r11792 $ umask 027
Martin Geisler
tests: remove redundant mkdir...
r13956
$ hg init test1
Nicolas Dumazet
tests: unify test-flags
r11792 $ cd test1
$ touch a b
$ hg add a b
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg ci -m "added a b"
Nicolas Dumazet
tests: unify test-flags
r11792
$ cd ..
$ hg clone test1 test3
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
Martin Geisler
tests: remove redundant mkdir...
r13956
$ hg init test2
Nicolas Dumazet
tests: unify test-flags
r11792 $ cd test2
$ hg pull ../test1
pulling from ../test1
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
(run 'hg update' to get a working copy)
$ hg co
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ chmod +x a
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg ci -m "chmod +x a"
Nicolas Dumazet
tests: unify test-flags
r11792
the changelog should mention file a:
$ hg tip --template '{files}\n'
a
$ cd ../test1
$ echo 123 >>a
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg ci -m "a updated"
Nicolas Dumazet
tests: unify test-flags
r11792
$ hg pull ../test2
pulling from ../test2
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 0 changes to 0 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
$ hg heads
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 2:7f4313b42a34
Nicolas Dumazet
tests: unify test-flags
r11792 tag: tip
Martin Geisler
tests: remove unneeded -d flags...
r12156 parent: 0:22a449e20da5
Nicolas Dumazet
tests: unify test-flags
r11792 user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-flags
r11792 summary: chmod +x a
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 1:c6ecefc45368
Nicolas Dumazet
tests: unify test-flags
r11792 user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-flags
r11792 summary: a updated
$ hg history
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 2:7f4313b42a34
Nicolas Dumazet
tests: unify test-flags
r11792 tag: tip
Martin Geisler
tests: remove unneeded -d flags...
r12156 parent: 0:22a449e20da5
Nicolas Dumazet
tests: unify test-flags
r11792 user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-flags
r11792 summary: chmod +x a
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 1:c6ecefc45368
Nicolas Dumazet
tests: unify test-flags
r11792 user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-flags
r11792 summary: a updated
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 0:22a449e20da5
Nicolas Dumazet
tests: unify test-flags
r11792 user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-flags
r11792 summary: added a b
$ hg -v merge
resolving manifests
Mads Kiilerich
merge: changing the mode of a file is also an update...
r18334 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Nicolas Dumazet
tests: unify test-flags
r11792 (branch merge, don't forget to commit)
Mads Kiilerich
tests: better test coverage of merges of flags...
r18337 $ cat a
123
$ [ -x a ]
Nicolas Dumazet
tests: unify test-flags
r11792
$ cd ../test3
$ echo 123 >>b
Martin Geisler
tests: remove unneeded -d flags...
r12156 $ hg ci -m "b updated"
Nicolas Dumazet
tests: unify test-flags
r11792
$ hg pull ../test2
pulling from ../test2
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 0 changes to 0 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
$ hg heads
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 2:7f4313b42a34
Nicolas Dumazet
tests: unify test-flags
r11792 tag: tip
Martin Geisler
tests: remove unneeded -d flags...
r12156 parent: 0:22a449e20da5
Nicolas Dumazet
tests: unify test-flags
r11792 user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-flags
r11792 summary: chmod +x a
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 1:dc57ead75f79
Nicolas Dumazet
tests: unify test-flags
r11792 user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-flags
r11792 summary: b updated
$ hg history
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 2:7f4313b42a34
Nicolas Dumazet
tests: unify test-flags
r11792 tag: tip
Martin Geisler
tests: remove unneeded -d flags...
r12156 parent: 0:22a449e20da5
Nicolas Dumazet
tests: unify test-flags
r11792 user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-flags
r11792 summary: chmod +x a
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 1:dc57ead75f79
Nicolas Dumazet
tests: unify test-flags
r11792 user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-flags
r11792 summary: b updated
Martin Geisler
tests: remove unneeded -d flags...
r12156 changeset: 0:22a449e20da5
Nicolas Dumazet
tests: unify test-flags
r11792 user: test
Martin Geisler
tests: remove unneeded -d flags...
r12156 date: Thu Jan 01 00:00:00 1970 +0000
Nicolas Dumazet
tests: unify test-flags
r11792 summary: added a b
$ hg -v merge
resolving manifests
Mads Kiilerich
merge: changing the mode of a file is also an update...
r18334 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Nicolas Dumazet
tests: unify test-flags
r11792 (branch merge, don't forget to commit)
$ ls -l ../test[123]/a > foo
$ cut -b 1-10 < foo
-rwxr-x---
-rwxr-x---
-rwxr-x---
Sune Foldager
tests: fix deprecated use of hg debugdata/debugindex...
r14182 $ hg debugindex a
Bryan O'Sullivan
tests: reduce spurious failures when run with generaldelta...
r17132 rev offset length ..... linkrev nodeid p1 p2 (re)
0 0 0 ..... 0 b80de5d13875 000000000000 000000000000 (re)
Sune Foldager
tests: fix deprecated use of hg debugdata/debugindex...
r14182 $ hg debugindex -R ../test2 a
Bryan O'Sullivan
tests: reduce spurious failures when run with generaldelta...
r17132 rev offset length ..... linkrev nodeid p1 p2 (re)
0 0 0 ..... 0 b80de5d13875 000000000000 000000000000 (re)
Sune Foldager
tests: fix deprecated use of hg debugdata/debugindex...
r14182 $ hg debugindex -R ../test1 a
Bryan O'Sullivan
tests: reduce spurious failures when run with generaldelta...
r17132 rev offset length ..... linkrev nodeid p1 p2 (re)
0 0 0 ..... 0 b80de5d13875 000000000000 000000000000 (re)
1 0 5 ..... 1 7fe919cc0336 b80de5d13875 000000000000 (re)
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
$ cd ..