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

r23057:f41dd17a stable
r24158:d414c28d stable
Show More
test-revset-outgoing.t
116 lines | 2.4 KiB | text/troff | Tads3Lexer
/ tests / test-revset-outgoing.t
Adrian Buehlmann
revset: fix #branch in urls for outgoing()...
r12614 $ cat >> $HGRCPATH <<EOF
> [alias]
> tlog = log --template "{rev}:{node|short}: '{desc}' {branches}\n"
> tglog = tlog -G
> tout = out --template "{rev}:{node|short}: '{desc}' {branches}\n"
> EOF
$ hg init a
$ cd a
$ echo a > a
$ hg ci -Aqm0
$ echo foo >> a
$ hg ci -Aqm1
$ hg up -q 0
$ hg branch stable
marked working directory as branch stable
Matt Mackall
branch: warn on branching
r15615 (branches are permanent and global, did you want a bookmark?)
Adrian Buehlmann
revset: fix #branch in urls for outgoing()...
r12614 $ echo bar >> a
$ hg ci -qm2
$ hg tglog
@ 2:7bee6c3bea3a: '2' stable
|
| o 1:3560197d8331: '1'
|/
o 0:f7b1eb17ad24: '0'
$ cd ..
$ hg clone -q a#stable b
$ cd b
$ cat .hg/hgrc
Jordi Gutiérrez Hermoso
config: use the same hgrc for a cloned repo as for an uninitted repo...
r22837 # example repository config (see "hg help config" for more info)
[paths]
FUJIWARA Katsunori
tests: add "(glob)" to paths in test-revset-outgoing.t for Windows
r23057 default = $TESTTMP/a#stable (glob)
Jordi Gutiérrez Hermoso
config: use the same hgrc for a cloned repo as for an uninitted repo...
r22837
# path aliases to other clones of this repo in URLs or filesystem paths
# (see "hg help config.paths" for more info)
#
# default-push = ssh://jdoe@example.net/hg/jdoes-fork
# my-fork = ssh://jdoe@example.net/hg/jdoes-fork
# my-clone = /home/jdoe/jdoes-clone
[ui]
# name and email (local to this repository, optional), e.g.
Augie Fackler
clone: provide sample username = config entry in .hg/hgrc (issue4359)...
r22380 # username = Jane Doe <jdoe@example.com>
Adrian Buehlmann
revset: fix #branch in urls for outgoing()...
r12614
$ echo red >> a
$ hg ci -qm3
$ hg up -q default
$ echo blue >> a
$ hg ci -qm4
$ hg tglog
@ 3:f0461977a3db: '4'
|
| o 2:1d4099801a4e: '3' stable
| |
| o 1:7bee6c3bea3a: '2' stable
|/
o 0:f7b1eb17ad24: '0'
$ hg tout
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 comparing with $TESTTMP/a (glob)
Adrian Buehlmann
revset: fix #branch in urls for outgoing()...
r12614 searching for changes
2:1d4099801a4e: '3' stable
$ hg tlog -r 'outgoing()'
2:1d4099801a4e: '3' stable
$ hg tout ../a#default
comparing with ../a
searching for changes
3:f0461977a3db: '4'
$ hg tlog -r 'outgoing("../a#default")'
3:f0461977a3db: '4'
$ echo "green = ../a#default" >> .hg/hgrc
$ cat .hg/hgrc
Jordi Gutiérrez Hermoso
config: use the same hgrc for a cloned repo as for an uninitted repo...
r22837 # example repository config (see "hg help config" for more info)
[paths]
FUJIWARA Katsunori
tests: add "(glob)" to paths in test-revset-outgoing.t for Windows
r23057 default = $TESTTMP/a#stable (glob)
Jordi Gutiérrez Hermoso
config: use the same hgrc for a cloned repo as for an uninitted repo...
r22837
# path aliases to other clones of this repo in URLs or filesystem paths
# (see "hg help config.paths" for more info)
#
# default-push = ssh://jdoe@example.net/hg/jdoes-fork
# my-fork = ssh://jdoe@example.net/hg/jdoes-fork
# my-clone = /home/jdoe/jdoes-clone
[ui]
# name and email (local to this repository, optional), e.g.
Augie Fackler
clone: provide sample username = config entry in .hg/hgrc (issue4359)...
r22380 # username = Jane Doe <jdoe@example.com>
Adrian Buehlmann
revset: fix #branch in urls for outgoing()...
r12614 green = ../a#default
$ hg tout green
Jordi Gutiérrez Hermoso
config: use the same hgrc for a cloned repo as for an uninitted repo...
r22837 comparing with green
abort: repository green not found!
[255]
Adrian Buehlmann
revset: fix #branch in urls for outgoing()...
r12614
$ hg tlog -r 'outgoing("green")'
Jordi Gutiérrez Hermoso
config: use the same hgrc for a cloned repo as for an uninitted repo...
r22837 abort: repository green not found!
[255]
Adrian Buehlmann
revset: fix #branch in urls for outgoing()...
r12614
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913 $ cd ..