summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2013-09-04 12:36:32 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2013-09-04 12:36:32 -0700
commit4f5e9726e1fd0f9a5cbf53c70055fc678e48a06c (patch)
tree5ea56be379b697f72019aee89c19acc0699cd991
parentMerge branch 'sb/misc-cleanup' (diff)
parentremote-hg: add shared repo upgrade (diff)
downloadtgif-4f5e9726e1fd0f9a5cbf53c70055fc678e48a06c.tar.xz
Merge branch 'fc/remote-hg-shared-setup'
* fc/remote-hg-shared-setup: remote-hg: add shared repo upgrade remote-hg: ensure shared repo is initialized
-rwxr-xr-xcontrib/remote-helpers/git-remote-hg23
1 files changed, 18 insertions, 5 deletions
diff --git a/contrib/remote-helpers/git-remote-hg b/contrib/remote-helpers/git-remote-hg
index 81ca001c3b..c27603965a 100755
--- a/contrib/remote-helpers/git-remote-hg
+++ b/contrib/remote-helpers/git-remote-hg
@@ -391,11 +391,24 @@ def get_repo(url, alias):
os.makedirs(dirname)
else:
shared_path = os.path.join(gitdir, 'hg')
- if not os.path.exists(shared_path):
- try:
- hg.clone(myui, {}, url, shared_path, update=False, pull=True)
- except:
- die('Repository error')
+
+ # check and upgrade old organization
+ hg_path = os.path.join(shared_path, '.hg')
+ if os.path.exists(shared_path) and not os.path.exists(hg_path):
+ repos = os.listdir(shared_path)
+ for x in repos:
+ local_hg = os.path.join(shared_path, x, 'clone', '.hg')
+ if not os.path.exists(local_hg):
+ continue
+ if not os.path.exists(hg_path):
+ shutil.move(local_hg, hg_path)
+ shutil.rmtree(os.path.join(shared_path, x, 'clone'))
+
+ # setup shared repo (if not there)
+ try:
+ hg.peer(myui, {}, shared_path, create=True)
+ except error.RepoError:
+ pass
if not os.path.exists(dirname):
os.makedirs(dirname)