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

r22117:c1d93edc default
r24158:d414c28d stable
Show More
test-dispatch.t
62 lines | 1.2 KiB | text/troff | Tads3Lexer
Adrian Buehlmann
tests: unify test-dispatch
r12157 test command parsing and dispatch
$ hg init a
$ cd a
Nicolas Dumazet
tests: move test-issue436 in test-dispatch where fancyopts is tested
r14115
Redundant options used to crash (issue436):
$ hg -v log -v
$ hg -v log -v x
Adrian Buehlmann
tests: unify test-dispatch
r12157 $ echo a > a
$ hg ci -Ama
adding a
Missing arg:
$ hg cat
hg cat: invalid arguments
hg cat [OPTION]... FILE...
output the current or given revision of files
Matt Mackall
help: fold repeatable option message into option table header...
r22117 options ([+] can be repeated):
Adrian Buehlmann
tests: unify test-dispatch
r12157
Matt Mackall
help: use RST to format option lists
r15145 -o --output FORMAT print output to file with formatted name
-r --rev REV print the given revision
--decode apply any matching decode filter
-I --include PATTERN [+] include names matching the given patterns
-X --exclude PATTERN [+] exclude names matching the given patterns
Adrian Buehlmann
tests: unify test-dispatch
r12157
Matt Mackall
help: improve command summary hint...
r22111 (use "hg cat -h" to show more help)
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Adrian Buehlmann
tests: unify test-dispatch
r12157
[defaults]
$ hg cat a
a
$ cat >> $HGRCPATH <<EOF
> [defaults]
> cat = -r null
> EOF
$ hg cat a
a: no such file in rev 000000000000
Matt Mackall
tests: add exit codes to unified tests
r12316 [1]
Adrian Buehlmann
tests: unify test-dispatch
r12157
Mads Kiilerich
tests: convert some 'hghave no-outer-repo' to #if...
r17014 $ cd "$TESTTMP"
Mads Kiilerich
tests: fix for windows - slashes and no serve
r18506 OSError "No such file or directory" / "The system cannot find the path
specified" should include filename even when it is empty
Mads Kiilerich
dispatch: show empty filename in OSError aborts...
r18227
$ hg -R a archive ''
Mads Kiilerich
tests: fix for windows - slashes and no serve
r18506 abort: *: '' (glob)
Mads Kiilerich
dispatch: show empty filename in OSError aborts...
r18227 [255]
Mads Kiilerich
tests: convert some 'hghave no-outer-repo' to #if...
r17014 #if no-outer-repo
Adrian Buehlmann
tests: unify test-dispatch
r12157 No repo:
$ hg cat
Matt Mackall
dispatch: improve repository not found message...
r13967 abort: no repository found in '$TESTTMP' (.hg not found)!
Matt Mackall
tests: add exit codes to unified tests
r12316 [255]
Adrian Buehlmann
tests: unify test-dispatch
r12157
Mads Kiilerich
tests: convert some 'hghave no-outer-repo' to #if...
r17014 #endif