remote-hg: add shared repo upgrade
authorFelipe Contreras <felipe.contreras@gmail.com>
Fri, 9 Aug 2013 22:38:04 +0000 (17:38 -0500)
committerJunio C Hamano <gitster@pobox.com>
Mon, 12 Aug 2013 06:17:10 +0000 (23:17 -0700)
If we have an old organization (v1.8.3), and want to upgrade to a newer
one (v1.8.4), the user would have to fetch the whole repository, instead
we can just move the repository, so the user would not notice any
difference.

Also, remove other clones, so in time they get set up as shared.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Reviewed-by: Antoine Pelisse <apelisse@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/remote-helpers/git-remote-hg

index cfd4f53fe182e50d61327adefc4c347a0b53eaf3..d2ff0e265399e0ad4ee31503527ce20598e0b14d 100755 (executable)
@@ -392,6 +392,18 @@ def get_repo(url, alias):
     else:
         shared_path = os.path.join(gitdir, 'hg')
 
+        # 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)