git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3] remotes-hg: bugfix for fetching non local remotes

From
Antoine Pelisse <apelisse@gmail.com>
Date
Jul 25, 2013, 19:53 UTC
Message-ID
<CALWbr2wN6k8JBCwLFC=TjTC_sg7Uh8AEsMOBKfH9aBxDEcV4oQ@mail.gmail.com>
In-Reply-To
<CAMP44s16bRx0p_F=PTcy9bekg_5TVC_GsQjzOev6xkpCEWcjAw@mail.gmail.com>

On Thu, Jul 25, 2013 at 9:12 PM, Felipe Contreras <felipe.contreras@gmail.com> wrote:

> Besides, I don't see
> the point of having a '.shared/.hg' directory, and nothing else on
> that '.shared' folder.
Is it not already true about the ".git/hg/$alias/clone/" directory ?
Show 11 quoted lines
> So, here's my patch. If only Junio read them.
>
> Subject: [PATCH] remote-hg: add shared repo upgrade
>
> 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.
>
> It's trivial to upgrade to the new organization by copying the Mercurial
> repo from one of the remotes (e.g. 'origin'), so let's do so.

I agree with you that we should consider migration. But there's another use-case I think can fail. What happens with the following:

git clone hg::/my/hg/repo cd repo && git remote add newremote hg::http://some/hg/url

Git clone will create .git/hg/origin and with no hg clone (because it's a local repository), and then create marks-file in there.

Show 22 quoted lines
> Reported-by: Joern Hees <dev@joernhees.de>
> Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
> ---
>  contrib/remote-helpers/git-remote-hg.py | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/contrib/remote-helpers/git-remote-hg.py
> b/contrib/remote-helpers/git-remote-hg.py
> index 0194c67..57a8ec4 100755
> --- a/contrib/remote-helpers/git-remote-hg.py
> +++ b/contrib/remote-helpers/git-remote-hg.py
> @@ -396,6 +396,13 @@ def get_repo(url, alias):
>                  hg.clone(myui, {}, url, shared_path, update=False, pull=True)
>              except:
>                  die('Repository error')
> +        else:
> +            # check and upgrade old organization
> +            hg_path = os.path.join(shared_path, '.hg')
> +            if not os.path.exists(hg_path):
> +                repos = os.listdir(shared_path)
> +                local_hg = os.path.join(shared_path, repos[0], 'clone', '.hg')
> +                shutil.copytree(local_hg, hg_path)

With the use-case I described above, I think shutil.copytree() would raise an exception because local_hg doesn't exist.

Previous: Felipe ContrerasNext: Felipe Contreras
Message 3 of 16 in “remotes-hg: bugfix for fetching non local remotes”
  1. remotes-hg: bugfix for fetching non local remotesJoern Hees, Jul 25, 2013
  2. Felipe ContrerasJul 25, 2013
  3. Antoine PelisseJul 25, 2013
  4. Felipe ContrerasJul 25, 2013
  5. Antoine PelisseJul 25, 2013
  6. Junio C HamanoJul 26, 2013
  7. Jörn HeesJul 26, 2013
  8. remote-hg: Fix cloning and sharing bugAntoine Pelisse, Aug 4, 2013
  9. Jörn HeesAug 4, 2013
  10. Felipe ContrerasAug 4, 2013
  11. Jörn HeesAug 4, 2013
  12. Felipe ContrerasAug 4, 2013
  13. Antoine PelisseAug 4, 2013
  14. Felipe ContrerasAug 4, 2013
  15. Felipe ContrerasAug 4, 2013
  16. Jörn HeesJul 26, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.