##// 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:

r23348:bbe56e07 default
r24158:d414c28d stable
Show More
test-manifest.t
77 lines | 1.1 KiB | text/troff | Tads3Lexer
Matt Mackall
tests: fix a bunch of pointless #s in unified tests
r12328 Source bundle was generated with the following script:
Adrian Buehlmann
tests: unify test-manifest*
r12253 # hg init
# echo a > a
# ln -s a l
# hg ci -Ama -d'0 0'
# mkdir b
# echo a > b/a
# chmod +x b/a
# hg ci -Amb -d'1 0'
$ hg init
Nicolas Dumazet
tests: move test bundles in a bundles/ subdirectory
r14116 $ hg -q pull "$TESTDIR/bundles/test-manifest.hg"
Adrian Buehlmann
tests: unify test-manifest*
r12253
The next call is expected to return nothing:
$ hg manifest
$ hg co
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg manifest
a
b/a
l
Matt Mackall
files: add new command unifying locate and manifest functionality
r22423 $ hg files -vr .
2 a
Matt Harbison
tests: fix globs for Windows...
r23348 2 x b/a (glob)
Matt Mackall
files: add new command unifying locate and manifest functionality
r22423 1 l l
$ hg files -r . -X b
a
l
Adrian Buehlmann
tests: unify test-manifest*
r12253 $ hg manifest -v
644 a
755 * b/a
644 @ l
$ hg manifest --debug
b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 644 a
b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 755 * b/a
047b75c6d7a3ef6a2243bd0e99f94f6ea6683597 644 @ l
$ hg manifest -r 0
a
l
$ hg manifest -r 1
a
b/a
l
$ hg manifest -r tip
a
b/a
l
$ hg manifest tip
a
b/a
l
Adrian Buehlmann
add new option --all to manifest command...
r14399 $ hg manifest --all
a
b/a
l
Adrian Buehlmann
tests: unify test-manifest*
r12253
The next two calls are expected to abort:
$ hg manifest -r 2
abort: unknown revision '2'!
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Adrian Buehlmann
tests: unify test-manifest*
r12253
$ hg manifest -r tip tip
abort: please specify just one revision
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]