* [PATCH v2 0/2] remote-hg: shared repo upgrade fix
@ 2013-08-09 22:38 Felipe Contreras
2013-08-09 22:38 ` [PATCH v2 1/2] remote-hg: ensure shared repo is initialized Felipe Contreras
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Felipe Contreras @ 2013-08-09 22:38 UTC (permalink / raw)
To: git; +Cc: Antoine Pelisse, Jörn Hees, Junio C Hamano, Felipe Contreras
Hi,
Same as before, except with commit messages updated, and improved the second
patch:
--- a/contrib/remote-helpers/git-remote-hg
+++ b/contrib/remote-helpers/git-remote-hg
@@ -400,8 +400,9 @@ def get_repo(url, alias):
local_hg = os.path.join(shared_path, x, 'clone', '.hg')
if not os.path.exists(local_hg):
continue
- shutil.copytree(local_hg, hg_path)
- break
+ 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:
Felipe Contreras (2):
remote-hg: ensure shared repo is initialized
remote-hg: add shared repo upgrade
contrib/remote-helpers/git-remote-hg | 23 ++++++++++++++++++-----
1 file changed, 18 insertions(+), 5 deletions(-)
--
1.8.3.267.gbb4989f
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2 1/2] remote-hg: ensure shared repo is initialized
2013-08-09 22:38 [PATCH v2 0/2] remote-hg: shared repo upgrade fix Felipe Contreras
@ 2013-08-09 22:38 ` Felipe Contreras
2013-08-09 22:38 ` [PATCH v2 2/2] remote-hg: add shared repo upgrade Felipe Contreras
2013-08-10 15:18 ` [PATCH v2 0/2] remote-hg: shared repo upgrade fix Antoine Pelisse
2 siblings, 0 replies; 4+ messages in thread
From: Felipe Contreras @ 2013-08-09 22:38 UTC (permalink / raw)
To: git; +Cc: Antoine Pelisse, Jörn Hees, Junio C Hamano, Felipe Contreras
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 <felipe.contreras@gmail.com>
---
contrib/remote-helpers/git-remote-hg | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/contrib/remote-helpers/git-remote-hg b/contrib/remote-helpers/git-remote-hg
index 0194c67..cfd4f53 100755
--- a/contrib/remote-helpers/git-remote-hg
+++ b/contrib/remote-helpers/git-remote-hg
@@ -391,11 +391,12 @@ 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')
+
+ # 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)
--
1.8.3.267.gbb4989f
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v2 2/2] remote-hg: add shared repo upgrade
2013-08-09 22:38 [PATCH v2 0/2] remote-hg: shared repo upgrade fix Felipe Contreras
2013-08-09 22:38 ` [PATCH v2 1/2] remote-hg: ensure shared repo is initialized Felipe Contreras
@ 2013-08-09 22:38 ` Felipe Contreras
2013-08-10 15:18 ` [PATCH v2 0/2] remote-hg: shared repo upgrade fix Antoine Pelisse
2 siblings, 0 replies; 4+ messages in thread
From: Felipe Contreras @ 2013-08-09 22:38 UTC (permalink / raw)
To: git; +Cc: Antoine Pelisse, Jörn Hees, Junio C Hamano, Felipe Contreras
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>
---
contrib/remote-helpers/git-remote-hg | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/contrib/remote-helpers/git-remote-hg b/contrib/remote-helpers/git-remote-hg
index cfd4f53..6c82b8d 100755
--- a/contrib/remote-helpers/git-remote-hg
+++ b/contrib/remote-helpers/git-remote-hg
@@ -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)
--
1.8.3.267.gbb4989f
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v2 0/2] remote-hg: shared repo upgrade fix
2013-08-09 22:38 [PATCH v2 0/2] remote-hg: shared repo upgrade fix Felipe Contreras
2013-08-09 22:38 ` [PATCH v2 1/2] remote-hg: ensure shared repo is initialized Felipe Contreras
2013-08-09 22:38 ` [PATCH v2 2/2] remote-hg: add shared repo upgrade Felipe Contreras
@ 2013-08-10 15:18 ` Antoine Pelisse
2 siblings, 0 replies; 4+ messages in thread
From: Antoine Pelisse @ 2013-08-10 15:18 UTC (permalink / raw)
To: Felipe Contreras; +Cc: git, Jörn Hees, Junio C Hamano
On Sat, Aug 10, 2013 at 12:38 AM, Felipe Contreras
<felipe.contreras@gmail.com> wrote:
> Hi,
>
> Same as before, except with commit messages updated, and improved the second
> patch:
>
> --- a/contrib/remote-helpers/git-remote-hg
> +++ b/contrib/remote-helpers/git-remote-hg
> @@ -400,8 +400,9 @@ def get_repo(url, alias):
> local_hg = os.path.join(shared_path, x, 'clone', '.hg')
> if not os.path.exists(local_hg):
> continue
> - shutil.copytree(local_hg, hg_path)
> - break
> + 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:
FWIW,
Reviewed-by: Antoine Pelisse <apelisse@gmail.com>
Cheers,
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-08-10 15:18 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-09 22:38 [PATCH v2 0/2] remote-hg: shared repo upgrade fix Felipe Contreras
2013-08-09 22:38 ` [PATCH v2 1/2] remote-hg: ensure shared repo is initialized Felipe Contreras
2013-08-09 22:38 ` [PATCH v2 2/2] remote-hg: add shared repo upgrade Felipe Contreras
2013-08-10 15:18 ` [PATCH v2 0/2] remote-hg: shared repo upgrade fix Antoine Pelisse
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).