D4708: localrepo: support writing shared file (API)
indygreg (Gregory Szorc)
phabricator at mercurial-scm.org
Wed Sep 26 13:24:19 EDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rHGd3d4b4b5f725: localrepo: support writing shared file (API) (authored by indygreg, committed by ).
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D4708?vs=11316&id=11381
REVISION DETAIL
https://phab.mercurial-scm.org/D4708
AFFECTED FILES
hgext/largefiles/overrides.py
hgext/lfs/wrapper.py
mercurial/hg.py
mercurial/localrepo.py
CHANGE DETAILS
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -2786,6 +2786,7 @@
'narrowfiles',
'sharedrepo',
'sharedrelative',
+ 'shareditems',
}
return {k: v for k, v in createopts.items() if k not in known}
@@ -2806,6 +2807,8 @@
Boolean indicating if the path to the shared repo should be
stored as relative. By default, the pointer to the "parent" repo
is stored as an absolute path.
+ shareditems
+ Set of items to share to the new repository (in addition to storage).
"""
createopts = createopts or {}
@@ -2867,6 +2870,10 @@
if 'sharedrepo' in createopts:
hgvfs.write(b'sharedpath', sharedpath)
+ if createopts.get('shareditems'):
+ shared = b'\n'.join(sorted(createopts['shareditems'])) + b'\n'
+ hgvfs.write(b'shared', shared)
+
def poisonrepository(repo):
"""Poison a repository instance so it can no longer be used."""
# Perform any cleanup on the instance.
diff --git a/mercurial/hg.py b/mercurial/hg.py
--- a/mercurial/hg.py
+++ b/mercurial/hg.py
@@ -259,12 +259,17 @@
srcrepo = source.local()
checkout = None
+ shareditems = set()
+ if bookmarks:
+ shareditems.add(sharedbookmarks)
+
r = repository(ui, dest, create=True, createopts={
'sharedrepo': srcrepo,
'sharedrelative': relative,
+ 'shareditems': shareditems,
})
- postshare(srcrepo, r, bookmarks=bookmarks, defaultpath=defaultpath)
+ postshare(srcrepo, r, defaultpath=defaultpath)
_postshareupdate(r, update, checkout=checkout)
return r
@@ -315,7 +320,7 @@
return newrepo
-def postshare(sourcerepo, destrepo, bookmarks=True, defaultpath=None):
+def postshare(sourcerepo, destrepo, defaultpath=None):
"""Called after a new shared repo is created.
The new repo only has a requirements file and pointer to the source.
@@ -330,10 +335,6 @@
'default = %s\n')
destrepo.vfs.write('hgrc', util.tonativeeol(template % default))
- with destrepo.wlock():
- if bookmarks:
- destrepo.vfs.write('shared', sharedbookmarks + '\n')
-
def _postshareupdate(repo, update, checkout=None):
"""Maybe perform a working directory update after a shared repo is created.
diff --git a/hgext/lfs/wrapper.py b/hgext/lfs/wrapper.py
--- a/hgext/lfs/wrapper.py
+++ b/hgext/lfs/wrapper.py
@@ -240,8 +240,8 @@
return result
-def hgpostshare(orig, sourcerepo, destrepo, bookmarks=True, defaultpath=None):
- orig(sourcerepo, destrepo, bookmarks, defaultpath)
+def hgpostshare(orig, sourcerepo, destrepo, defaultpath=None):
+ orig(sourcerepo, destrepo, defaultpath=defaultpath)
# If lfs is required for this repo, permanently enable it locally
if 'lfs' in destrepo.requirements:
diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py
--- a/hgext/largefiles/overrides.py
+++ b/hgext/largefiles/overrides.py
@@ -905,8 +905,8 @@
return result
-def hgpostshare(orig, sourcerepo, destrepo, bookmarks=True, defaultpath=None):
- orig(sourcerepo, destrepo, bookmarks, defaultpath)
+def hgpostshare(orig, sourcerepo, destrepo, defaultpath=None):
+ orig(sourcerepo, destrepo, defaultpath=defaultpath)
# If largefiles is required for this repo, permanently enable it locally
if 'largefiles' in destrepo.requirements:
To: indygreg, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list