Comments
Patch
@@ -996,11 +996,25 @@
update=False, bookmarks=False)
self._repo = shared.local()
else:
+ # TODO: find a common place for this and this code in the
+ # share.py wrap of the clone command.
+ if parentrepo.shared():
+ pool = self.ui.config('share', 'pool')
+ if pool:
+ pool = util.expandpath(pool)
+
+ shareopts = {
+ 'pool': pool,
+ 'mode': self.ui.config('share', 'poolnaming'),
+ }
+ else:
+ shareopts = {}
+
self.ui.status(_('cloning subrepo %s from %s\n')
% (subrelpath(self), srcurl))
other, cloned = hg.clone(self._repo._subparent.baseui, {},
other, self._repo.root,
- update=False)
+ update=False, shareopts=shareopts)
self._repo = cloned.local()
self._initrepo(parentrepo, source, create=True)
self._cachestorehash(srcurl)
@@ -292,8 +292,8 @@
z2
z3
-BUG: The remote subrepo should be cloned to the local pool, and then shared
-from there.
+Clone pooling from a remote URL will share the top level repo and the subrepos,
+even if they are referenced by remote URL.
$ hg --config extensions.share= --config share.pool=$TESTTMP/pool \
> clone http://localhost:$HGPORT shared
@@ -308,19 +308,25 @@
no changes found
updating working directory
cloning subrepo foo from http://localhost:$HGPORT/foo
+ (sharing from new pooled repository af048e97ade2e236f754f05d07013e586af0f8bf)
requesting all changes
adding changesets
adding manifests
adding file changes
added 4 changesets with 7 changes to 3 files
new changesets af048e97ade2:65903cebad86
+ searching for changes
+ no changes found
cloning subrepo foo/bar from http://localhost:$HGPORT/foo/bar
+ (sharing from new pooled repository 4904098473f96c900fec436dad267edd4da59fad)
requesting all changes
adding changesets
adding manifests
adding file changes
added 3 changesets with 3 changes to 1 files
new changesets 4904098473f9:31ecbdafd357
+ searching for changes
+ no changes found
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cat access.log
@@ -341,11 +347,19 @@
$LOCALIP - - [$LOGDATE$] "GET /?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D1326fa26d0c00d2146c63b56bb6a45149d7325ac x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ (glob)
$LOCALIP - - [$LOGDATE$] "GET /?cmd=getbundle HTTP/1.1" 200 - x-hgarg-1:bookmarks=1&$USUAL_BUNDLE_CAPS$&cg=0&common=1326fa26d0c00d2146c63b56bb6a45149d7325ac&heads=1326fa26d0c00d2146c63b56bb6a45149d7325ac&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ (glob)
$LOCALIP - - [$LOGDATE$] "GET /foo?cmd=capabilities HTTP/1.1" 200 - (glob)
+ $LOCALIP - - [$LOGDATE$] "GET /foo?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=0 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ (glob)
+ $LOCALIP - - [$LOGDATE$] "GET /foo?cmd=capabilities HTTP/1.1" 200 - (glob)
$LOCALIP - - [$LOGDATE$] "GET /foo?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ (glob)
$LOCALIP - - [$LOGDATE$] "GET /foo?cmd=getbundle HTTP/1.1" 200 - x-hgarg-1:bookmarks=1&$USUAL_BUNDLE_CAPS$&cg=1&common=0000000000000000000000000000000000000000&heads=65903cebad86f1a84bd4f1134f62fa7dcb7a1c98&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ (glob)
+ $LOCALIP - - [$LOGDATE$] "GET /foo?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D65903cebad86f1a84bd4f1134f62fa7dcb7a1c98 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ (glob)
+ $LOCALIP - - [$LOGDATE$] "GET /foo?cmd=getbundle HTTP/1.1" 200 - x-hgarg-1:bookmarks=1&$USUAL_BUNDLE_CAPS$&cg=0&common=65903cebad86f1a84bd4f1134f62fa7dcb7a1c98&heads=65903cebad86f1a84bd4f1134f62fa7dcb7a1c98&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ (glob)
+ $LOCALIP - - [$LOGDATE$] "GET /foo/bar?cmd=capabilities HTTP/1.1" 200 - (glob)
+ $LOCALIP - - [$LOGDATE$] "GET /foo/bar?cmd=lookup HTTP/1.1" 200 - x-hgarg-1:key=0 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ (glob)
$LOCALIP - - [$LOGDATE$] "GET /foo/bar?cmd=capabilities HTTP/1.1" 200 - (glob)
$LOCALIP - - [$LOGDATE$] "GET /foo/bar?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ (glob)
$LOCALIP - - [$LOGDATE$] "GET /foo/bar?cmd=getbundle HTTP/1.1" 200 - x-hgarg-1:bookmarks=1&$USUAL_BUNDLE_CAPS$&cg=1&common=0000000000000000000000000000000000000000&heads=31ecbdafd357f54b281c9bd1d681bb90de219e22&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ (glob)
+ $LOCALIP - - [$LOGDATE$] "GET /foo/bar?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D31ecbdafd357f54b281c9bd1d681bb90de219e22 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ (glob)
+ $LOCALIP - - [$LOGDATE$] "GET /foo/bar?cmd=getbundle HTTP/1.1" 200 - x-hgarg-1:bookmarks=1&$USUAL_BUNDLE_CAPS$&cg=0&common=31ecbdafd357f54b281c9bd1d681bb90de219e22&heads=31ecbdafd357f54b281c9bd1d681bb90de219e22&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ (glob)
$ killdaemons.py
$ rm hg1.pid error.log access.log
@@ -84,9 +84,9 @@
adding .hgsub
$ cd ..
-Clone pooling works for local clones with a remote subrepo reference.
-
-BUG: subrepos should be shared out of the pool.
+Clone pooling works for local clones with a remote subrepo reference. The
+subrepo is cloned to the pool and shared from there, so that all clones will
+share the same subrepo.
$ hg --config extensions.share= --config share.pool=$TESTTMP/pool \
> clone absolute_subrepo cloned_from_abs
@@ -101,12 +101,15 @@
no changes found
updating working directory
cloning subrepo sub from http://localhost:$HGPORT/sub
+ (sharing from new pooled repository 863c1745b441bd97a8c4a096e87793073f4fb215)
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
new changesets 863c1745b441
+ searching for changes
+ no changes found
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
Vanilla sharing with a subrepo remote path reference will clone the subrepo.