[Request] [+- ] D10850: clone: use "official" API to create local clone destination
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Wed Jun 9 14:39:04 UTC 2021
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
This make sure we have a properly created, fully functional repository early.
This will be useful to simply the hardlink/copy phases of the local clone to
make it share more of its logic with the similar "stream" cloning.
This has a minor impact of the test and the resulting repository has is better initialized (eg: the `wcache` directory is pre-created.)
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D10850
AFFECTED FILES
mercurial/hg.py
tests/test-empty.t
tests/test-extension.t
CHANGE DETAILS
diff --git a/tests/test-extension.t b/tests/test-extension.t
--- a/tests/test-extension.t
+++ b/tests/test-extension.t
@@ -111,6 +111,7 @@
reposetup called for a
ui == repo.ui
uipopulate called (1 times)
+ uipopulate called (1 times)
reposetup called for b
ui == repo.ui
updating to branch default
diff --git a/tests/test-empty.t b/tests/test-empty.t
--- a/tests/test-empty.t
+++ b/tests/test-empty.t
@@ -48,6 +48,7 @@
hgrc
requires
store
+ wcache
Should be empty:
diff --git a/mercurial/hg.py b/mercurial/hg.py
--- a/mercurial/hg.py
+++ b/mercurial/hg.py
@@ -857,20 +857,17 @@
if copy:
srcrepo.hook(b'preoutgoing', throw=True, source=b'clone')
- hgdir = os.path.realpath(os.path.join(dest, b".hg"))
- if not os.path.exists(dest):
- util.makedirs(dest)
- try:
- destpath = hgdir
- util.makedir(destpath, notindexed=True)
- except OSError as inst:
- if inst.errno == errno.EEXIST:
- cleandir = None
- raise error.Abort(
- _(b"destination '%s' already exists") % dest
- )
- raise
+ destrootpath = urlutil.urllocalpath(dest)
+ dest_reqs = localrepo.clone_requirements(ui, createopts, srcrepo)
+ localrepo.createrepository(
+ ui,
+ destrootpath,
+ requirements=dest_reqs,
+ )
+ destrepo = localrepo.makelocalrepository(ui, destrootpath)
+
+ destpath = destrepo.vfs.base
destlock = copystore(ui, srcrepo, destpath)
# copy bookmarks over
srcbookmarks = srcrepo.vfs.join(b'bookmarks')
To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mercurial-scm.org/pipermail/mercurial-patches/attachments/20210609/d140d285/attachment.html>
More information about the Mercurial-patches
mailing list