diff --git a/CHANGELOG b/CHANGELOG index d172c1b897..c579827738 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -12,6 +12,9 @@ git-annex (10.20250321) UNRELEASED; urgency=medium * migrate: Fix --remove-size to work when a file is not present. Fixes reversion introduced in version 10.20231129. * Support git remotes that use a IPV6 link-local address with a zone ID. + * Support git remotes that use an url with a user name that is URL encoded. + * Fix git-lfs special remote ssh endpoint discovery when the repository + path is URL encoded. -- Joey Hess Fri, 21 Mar 2025 12:27:11 -0400 diff --git a/Git/Url.hs b/Git/Url.hs index af13f58391..3114d1db0a 100644 --- a/Git/Url.hs +++ b/Git/Url.hs @@ -54,10 +54,13 @@ port r = Just (':':p) -> readish p Just _ -> Nothing -{- Hostname of an URL repo, including any username (ie, "user@host") -} +{- Hostname of an URL repo, including any username (ie, "user@host") + - + - Both the username and hostname are URI-decoded. + -} hostuser :: Repo -> Maybe String hostuser r = (++) - <$> authpart uriUserInfo r + <$> authpart (unEscapeString . uriUserInfo) r <*> host r {- The full authority portion an URL repo. (ie, "user@host:port") -} @@ -71,7 +74,7 @@ authpart :: (URIAuth -> a) -> Repo -> Maybe a authpart a Repo { location = Url u } = a <$> uriAuthority u authpart _ _ = Nothing -{- Path part of an URL repo. -} +{- Path part of an URL repo. It is URI-decoded. -} path :: Repo -> Maybe FilePath -path Repo { location = Url u } = Just (uriPath u) +path Repo { location = Url u } = Just $ unEscapeString $ uriPath u path _ = Nothing