I have a git remote in a git-annex-enabled repository. Here's what it looks like in .git/config:
[remote "renaissance"] url = ssh://[2001:0:53aa:64c:24ef:5ce4:2ef9:cdda]/home/paulproteus/Music/annex/ fetch = +refs/heads/*:refs/remotes/renaissance/* annex-uuid = 2992752e-1a13-11e0-ba68-57d3c800da64
I wanted to "git annex get" some data. git-annex appears to pass incorrectly-formatted IPv6 addresses to rsync:
get primary/emusiq/Arab Strap/Monday At The Hug And Pint/01-The Shy Retirer.mp3 (copying from renaissance...) ssh: Could not resolve hostname [2001:0:53aa:64c:24ef:5ce4:2ef9:cdda]: Name or service not known rsync: connection unexpectedly closed (0 bytes received so far) [Receiver] rsync error: unexplained error (code 255) at io.c(601) [Receiver=3.0.7] rsync failed -- run git annex again to resume file transfer Unable to access these remotes: renaissance Try making some of these repositories available: 2992752e-1a13-11e0-ba68-57d3c800da64 failed
In this case, the square brackets should not be there.
I tried changing the .git/config syntax slightly, and got a different, also-incorrect behavior:
[remote "renaissance"] url = [2001:0:53aa:64c:24ef:5ce4:2ef9:cdda]:/home/paulproteus/Music/annex/ fetch = +refs/heads/*:refs/remotes/renaissance/* annex-uuid = 2992752e-1a13-11e0-ba68-57d3c800da64
paulproteus@pathi:~/Music/annex$ git annex get git-annex: bad url ssh://[2001/~/0:53aa:64c:24ef:5ce4:2ef9:cdda]:/home/paulproteus/Music/annex/
(Note that both these .git/config entries work fine with "git fetch".)
Technically, this seems to be a bug in the haskell URI library; it honors the
in parsing, but does not remove them when the URI is queried for the host part.
Prelude Network.URI> let (Just u) = parseURI "http://foo@[2001:0:53aa:64c:24ef:5ce4:2ef9:cdda]/bar" Prelude Network.URI> let (Just a) = uriAuthority u Prelude Network.URI> uriRegName a "[2001:0:53aa:64c:24ef:5ce4:2ef9:cdda]" Prelude Network.URI> isIPv6address $ uriRegName a False