Skip to content
Snippets Groups Projects
Commit 9f7ecc5b authored by Matt Harbison's avatar Matt Harbison
Browse files

share: move the implementation of 'unshare' to the 'hg' module

This will be used to setup unsharing subrepos.  Usually cmdutil is used for
this purpose.  But the implementation needs hg.copystore(), and the hg module
already imports cmdutil.
parent eb24f1d1
No related branches found
No related tags found
No related merge requests found
......@@ -114,28 +114,7 @@
if not repo.shared():
raise error.Abort(_("this is not a shared repo"))
destlock = lock = None
lock = repo.lock()
try:
# we use locks here because if we race with commit, we
# can end up with extra data in the cloned revlogs that's
# not pointed to by changesets, thus causing verify to
# fail
destlock = hg.copystore(ui, repo, repo.path)
sharefile = repo.vfs.join('sharedpath')
util.rename(sharefile, sharefile + '.old')
repo.requirements.discard('shared')
repo.requirements.discard('relshared')
repo._writerequirements()
finally:
destlock and destlock.release()
lock and lock.release()
# update store, spath, svfs and sjoin of repo
repo.unfiltered().__init__(repo.baseui, repo.root)
hg.unshare(ui, repo)
# Wrap clone command to pass auto share options.
def clone(orig, ui, source, *args, **opts):
......
......@@ -257,6 +257,35 @@
_postshareupdate(r, update, checkout=checkout)
return r
def unshare(ui, repo):
"""convert a shared repository to a normal one
Copy the store data to the repo and remove the sharedpath data.
"""
destlock = lock = None
lock = repo.lock()
try:
# we use locks here because if we race with commit, we
# can end up with extra data in the cloned revlogs that's
# not pointed to by changesets, thus causing verify to
# fail
destlock = copystore(ui, repo, repo.path)
sharefile = repo.vfs.join('sharedpath')
util.rename(sharefile, sharefile + '.old')
repo.requirements.discard('shared')
repo.requirements.discard('relshared')
repo._writerequirements()
finally:
destlock and destlock.release()
lock and lock.release()
# update store, spath, svfs and sjoin of repo
repo.unfiltered().__init__(repo.baseui, repo.root)
def postshare(sourcerepo, destrepo, bookmarks=True, defaultpath=None):
"""Called after a new shared repo is created.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment