Support unescaped repository urls, like git does.
Turns out that git will accept a .git/config containing an url with eg, spaces in its name. Handle this by escaping the url if it's not valid. This also fixes support for urls containing escaped characters like %20 for space. Before, the path from the url was not unescaped properly.
This commit is contained in:
parent
3e3ed62bdf
commit
0b27e6baa0
3 changed files with 23 additions and 7 deletions
4
Git.hs
4
Git.hs
|
@ -29,7 +29,7 @@ module Git (
|
|||
|
||||
import qualified Data.Map as M
|
||||
import Data.Char
|
||||
import Network.URI (uriPath, uriScheme)
|
||||
import Network.URI (uriPath, uriScheme, unEscapeString)
|
||||
|
||||
import Common
|
||||
import Git.Types
|
||||
|
@ -107,7 +107,7 @@ gitDir repo
|
|||
-
|
||||
- Note that for URL repositories, this is the path on the remote host. -}
|
||||
workTree :: Repo -> FilePath
|
||||
workTree Repo { location = Url u } = uriPath u
|
||||
workTree Repo { location = Url u } = unEscapeString $ uriPath u
|
||||
workTree Repo { location = Dir d } = d
|
||||
workTree Repo { location = Unknown } = undefined
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue