Comments
Patch
@@ -105,9 +105,10 @@
command.
'''
-from mercurial import commands, localrepo
+from mercurial import commands, hg, localrepo
import lfcommands
+import proto
import reposetup
import uisetup as uisetupmod
@@ -121,6 +122,7 @@
def uisetup(ui):
localrepo.localrepository.featuresetupfuncs.add(featuresetup)
+ hg.wirepeersetupfuncs.append(proto.wirereposetup)
uisetupmod.uisetup(ui)
commands.norepo += " lfconvert"
@@ -16,14 +16,13 @@
from mercurial import localrepo
import lfcommands
-import proto
import lfutil
def reposetup(ui, repo):
- # wire repositories should be given new wireproto functions but not the
- # other largefiles modifications
+ # wire repositories should be given new wireproto functions
+ # by "proto.wirereposetup()" via "hg.wirepeersetupfuncs"
if not repo.local():
- return proto.wirereposetup(ui, repo)
+ return
class lfilesrepo(repo.__class__):
lfstatus = False
@@ -98,6 +98,9 @@
else:
return url.open(ui, path)
+# a list of (ui, repo) functions called for wire peer initialization
+wirepeersetupfuncs = []
+
def _peerorrepo(ui, path, create=False):
"""return a repository object for the specified path"""
obj = _peerlookup(path).instance(ui, path, create)
@@ -106,6 +109,9 @@
hook = getattr(module, 'reposetup', None)
if hook:
hook(ui, obj)
+ if not obj.local():
+ for f in wirepeersetupfuncs:
+ f(ui, obj)
return obj
def repository(ui, path='', create=False):
@@ -2285,4 +2285,30 @@
$ test -d clone-pull-dst
[1]
+#if serve
+
+Test largefiles specific peer setup, when largefiles is enabled
+locally (issue4109)
+
+ $ hg showconfig extensions | grep largefiles
+ extensions.largefiles=!
+ $ mkdir -p $TESTTMP/individualenabling/usercache
+
+ $ hg serve -R enabledlocally -d -p $HGPORT --pid-file hg.pid
+ $ cat hg.pid >> $DAEMON_PIDS
+
+ $ hg init pull-dst
+ $ cat > pull-dst/.hg/hgrc <<EOF
+ > [extensions]
+ > # enable locally
+ > largefiles=
+ > [largefiles]
+ > # ignore system cache to force largefiles specific wire proto access
+ > usercache=$TESTTMP/individualenabling/usercache
+ > EOF
+ $ hg -R pull-dst -q pull -u http://localhost:$HGPORT
+
+ $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
+#endif
+
$ cd ..