remote-hg: add shared repo upgrade

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>
This commit is contained in:
Felipe Contreras 2013-08-09 17:38:04 -05:00 коммит произвёл Junio C Hamano
Родитель 52f0856a7b
Коммит 3baacc5cc6
1 изменённых файлов: 12 добавлений и 0 удалений

Просмотреть файл

@ -392,6 +392,18 @@ def get_repo(url, alias):
else: else:
shared_path = os.path.join(gitdir, 'hg') 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) # setup shared repo (if not there)
try: try:
hg.peer(myui, {}, shared_path, create=True) hg.peer(myui, {}, shared_path, create=True)