Skip to content

Commit 52f0856

Browse files
felipecgitster
authored andcommitted
remote-hg: ensure shared repo is initialized
6796d49 (remote-hg: use a shared repository store) introduced a bug by making the shared repository '.git/hg', which is already used before that patch, so clones that happened before that patch, fail after that patch, because there's no shared Mercurial repo. So, instead of simply checking if the directory exists, let's always try to create an empty shared repository to ensure it's there. This works because we don't need the initial clone, if the repository is shared, pulling from the child updates the parent's storage; it's exactly the same as cloning, so we can simplify the shared repo setup this way while at the same time fixing the problem. Signed-off-by: Felipe Contreras <[email protected]> Reviewed-by: Antoine Pelisse <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent b48493e commit 52f0856

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

contrib/remote-helpers/git-remote-hg

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -391,11 +391,12 @@ def get_repo(url, alias):
391391
os.makedirs(dirname)
392392
else:
393393
shared_path = os.path.join(gitdir, 'hg')
394-
if not os.path.exists(shared_path):
395-
try:
396-
hg.clone(myui, {}, url, shared_path, update=False, pull=True)
397-
except:
398-
die('Repository error')
394+
395+
# setup shared repo (if not there)
396+
try:
397+
hg.peer(myui, {}, shared_path, create=True)
398+
except error.RepoError:
399+
pass
399400

400401
if not os.path.exists(dirname):
401402
os.makedirs(dirname)

0 commit comments

Comments
 (0)