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
Felipe Contreras <felipe.contreras@gmail.com>
Date
Jul 25, 2013, 20:40 UTC
Message-ID
<CAMP44s2v+CF7x+S6_47CiPb6RMXu+iy06gqWNjus4vff5J8z3g@mail.gmail.com>
In-Reply-To
<CALWbr2wN6k8JBCwLFC=TjTC_sg7Uh8AEsMOBKfH9aBxDEcV4oQ@mail.gmail.com>
On Thu, Jul 25, 2013 at 2:53 PM, Antoine Pelisse <apelisse@gmail.com> wrote:
Show 7 quoted lines
> 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 ?

Yeah, but that directory is kind of useful. Somebody might want to clone that, and it's self-explanatory; "Where is the clone of that Mercurial remote? Oh, there".

Show 47 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.
>
>> 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.
That's true. Maybe something like:
for x in repos:
  local_hg = os.path.join(shared_path, x, 'clone', '.hg')
  if os.path.exists(local_hg):
    shutil.copytree(local_hg, hg_path)
    break
-- 
Felipe Contreras
Previous: Antoine PelisseNext: Antoine Pelisse
Message 4 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.