summaryrefslogtreecommitdiff
path: root/Git.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@gnu.kitenet.net>2011-11-15 14:06:38 -0400
committerGravatar Joey Hess <joey@gnu.kitenet.net>2011-11-15 14:06:38 -0400
commit7d05ca1d6d01f7e9f8b2acdebac2b656e178a32c (patch)
tree2d4e0459bd3a904536be188387daa9349e93a7c5 /Git.hs
parent3c4537111509ea61138592a254a3a55a185cee23 (diff)
Fix support for insteadOf url remapping. Closes: #644278
Diffstat (limited to 'Git.hs')
-rw-r--r--Git.hs7
1 files changed, 4 insertions, 3 deletions
diff --git a/Git.hs b/Git.hs
index 5ceaa67f7..3ff42d28f 100644
--- a/Git.hs
+++ b/Git.hs
@@ -523,13 +523,14 @@ genRemote s repo = gen $ calcloc s
| null insteadofs = l
| otherwise = replacement ++ drop (length replacement) l
where
- replacement = take (length bestkey - length prefix) bestkey
+ replacement = drop (length "url.") $
+ take (length bestkey - length suffix) bestkey
bestkey = fst $ maximumBy longestvalue insteadofs
longestvalue (_, a) (_, b) = compare b a
insteadofs = filterconfig $ \(k, v) ->
- endswith prefix k &&
+ endswith suffix k &&
startswith v l
- prefix = ".insteadof"
+ suffix = ".insteadof"
-- git remotes can be written scp style -- [user@]host:dir
scpstyle v = ":" `isInfixOf` v && not ("//" `isInfixOf` v)
scptourl v = "ssh://" ++ host ++ slash dir