remote-hg: use a shared repository store
This way we don't have to have duplicated Mercurial objects. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Felipe Contreras committed
May 24, 2013 at 21:29 UTC
6796d49ed01c214d4eeb5b9f2ffd2a49b54a7207
1 file changed
+20
-15
contrib/remote-helpers/git-remote-hg
+20
-15
@@ -343,21 +343,29 @@ def get_repo(url, alias):
343
344
if hg.islocal(url):
345
repo = hg.repository(myui, url)
346
+ if not os.path.exists(dirname):
347
+ os.makedirs(dirname)
348
else:
347
- local_path = os.path.join(dirname, 'clone')
348
- if not os.path.exists(local_path):
349
+ shared_path = os.path.join(gitdir, 'hg')
350
+ if not os.path.exists(shared_path):
351
try:
350
- peer, dstpeer = hg.clone(myui, {}, url, local_path, update=True, pull=True)
352
+ hg.clone(myui, {}, url, shared_path, update=False, pull=True)
353
except:
354
die('Repository error')
353
- repo = dstpeer.local()
354
- else:
355
- repo = hg.repository(myui, local_path)
356
- try:
357
- peer = hg.peer(myui, {}, url)
358
- except:
359
- die('Repository error')
360
- repo.pull(peer, heads=None, force=True)
355
+
356
+ if not os.path.exists(dirname):
357
+ os.makedirs(dirname)
358
+
359
+ local_path = os.path.join(dirname, 'clone')
360
+ if not os.path.exists(local_path):
361
+ hg.share(myui, shared_path, local_path, update=False)
362
+
363
+ repo = hg.repository(myui, local_path)
364
+ try:
365
+ peer = hg.peer(myui, {}, url)
366
+ except:
367
+ die('Repository error')
368
+ repo.pull(peer, heads=None, force=True)
369
370
return repo
371
@@ -898,7 +906,7 @@ def fix_path(alias, repo, orig_url):
906
subprocess.call(cmd)
907
908
def main(args):
901
- global prefix, dirname, branches, bmarks
909
+ global prefix, gitdir, dirname, branches, bmarks
910
global marks, blob_marks, parsed_refs
911
global peer, mode, bad_mail, bad_name
912
global track_branches, force_push, is_tmp
@@ -944,9 +952,6 @@ def main(args):
952
if not is_tmp:
953
fix_path(alias, peer or repo, url)
954
947
- if not os.path.exists(dirname):
948
- os.makedirs(dirname)
949
-
955
marks_path = os.path.join(dirname, 'marks-hg')
956
marks = Marks(marks_path)
957