map: Avoid looping forever with mutually recursive paths between repositories accessed via ssh
Slightly unsatisfying to fix this in Git.Construct.localToUrl rather than in Command.Map.absRepo, which is what map relies on to make repos always use the same path form. But it was already constructing the url with the path there, so that was the easiest place to add normalization. Sponsored-by: Dartmouth College's OpenNeuro project
This commit is contained in:
parent
87c6110a82
commit
fd493804c0
4 changed files with 13 additions and 15 deletions
|
@ -2,6 +2,8 @@ git-annex (10.20250417) UNRELEASED; urgency=medium
|
|||
|
||||
* map: Fix buggy handling of remotes that are bare git repositories
|
||||
accessed via ssh.
|
||||
* map: Avoid looping forever with mutually recursive paths between
|
||||
repositories accessed via ssh.
|
||||
|
||||
-- Joey Hess <id@joeyh.name> Tue, 22 Apr 2025 14:33:26 -0400
|
||||
|
||||
|
|
|
@ -130,7 +130,7 @@ localToUrl reference r
|
|||
[ s
|
||||
, "//"
|
||||
, auth
|
||||
, fromOsPath $
|
||||
, fromOsPath $ simplifyPath $
|
||||
toOsPath referencepath </> repoPath r
|
||||
]
|
||||
in r { location = Url $ fromJust $ parseURIPortable absurl }
|
||||
|
|
|
@ -15,20 +15,6 @@ Produced what I think is the same bug, or related, though without the looping:
|
|||
Where foo is a remote accessed via ssh, which happens to be on the same host and parent directory
|
||||
as the repo I ran map in, and itself has a remote named foo that has an url of "../foo.git"
|
||||
|
||||
Changing the remote to be named foox with url "../foox", and
|
||||
with the bare remote now at "../foox.git", I started to see some looping too,
|
||||
though it didn't loop forever:
|
||||
|
||||
map . ok
|
||||
map origin (sshing...)
|
||||
ok
|
||||
map foox (sshing...)
|
||||
ok
|
||||
map origin (sshing...)
|
||||
ok
|
||||
map foox (sshing...)
|
||||
ok
|
||||
|
||||
One or both problems are caused by `map` using Git.Construct.fromRemotes
|
||||
on the git config that is has gotten by sshing to the remote and listing its config.
|
||||
Git.Construct really is written to operate on local repos, and fromRemotes
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
[[!comment format=mdwn
|
||||
username="joey"
|
||||
subject="""comment 3"""
|
||||
date="2025-04-22T19:42:40Z"
|
||||
content="""
|
||||
Ok, I added path normalization and that fixed the infinite loop that I saw.
|
||||
|
||||
I'm not 100% sure that it fixed the loop you saw though. Please test a
|
||||
daily build.
|
||||
"""]]
|
Loading…
Add table
Add a link
Reference in a new issue