map: Improve display of git remotes with non-ssh urls, including http and gcrypt.
authorJoey Hess <joeyh@joeyh.name>
Wed, 18 Nov 2015 19:08:55 +0000 (15:08 -0400)
committerJoey Hess <joeyh@joeyh.name>
Wed, 18 Nov 2015 19:08:55 +0000 (15:08 -0400)
Command/Map.hs
debian/changelog

index 64137ebe3dc09ca9b1ebff3ba574686c2fd12d95..e7789bdac7531c1682c42caacb23b9c9a1ae0396 100644 (file)
@@ -15,6 +15,7 @@ import qualified Git
 import qualified Git.Url
 import qualified Git.Config
 import qualified Git.Construct
+import qualified Remote
 import qualified Annex
 import Annex.UUID
 import Logs.UUID
@@ -166,9 +167,8 @@ absRepo reference r
 {- Checks if two repos are the same. -}
 same :: Git.Repo -> Git.Repo -> Bool
 same a b
-       | both Git.repoIsSsh = matching Git.Url.authority && matching Git.repoPath
-       | both Git.repoIsUrl && neither Git.repoIsSsh = matching show
-       | neither Git.repoIsSsh = matching Git.repoPath
+       | both Git.repoIsUrl = matching Git.Url.scheme && matching Git.Url.authority && matching Git.repoPath
+       | neither Git.repoIsUrl = matching Git.repoPath
        | otherwise = False
   where
        matching t = t a == t b
@@ -194,7 +194,13 @@ scan r = do
 tryScan :: Git.Repo -> Annex (Maybe Git.Repo)
 tryScan r
        | Git.repoIsSsh r = sshscan
-       | Git.repoIsUrl r = return Nothing
+       | Git.repoIsUrl r = case Git.remoteName r of
+               -- Can't scan a non-ssh url, so use any cached uuid for it.
+               Just n -> Just <$> (either
+                       (const (pure r))
+                       (liftIO . setUUID r . Remote.uuid)
+                       =<< Remote.byName' n)
+               Nothing -> return $ Just r
        | otherwise = liftIO $ safely $ Git.Config.read r
   where
        pipedconfig pcmd params = liftIO $ safely $
index 4231f998914d2352429ac2c6a8ae55f5f1f2f404..9c9b2c7c9017a7818e797859ba4f98fdfee3926a 100644 (file)
@@ -4,6 +4,8 @@ git-annex (5.20151117) UNRELEASED; urgency=medium
   * Display progress meter in -J mode when copying from a local git repo,
     to a local git repo, and from a remote git repo.
   * Display progress meter in -J mode when downloading from the web.
+  * map: Improve display of git remotes with non-ssh urls, including http
+    and gcrypt. 
 
  -- Joey Hess <id@joeyh.name>  Mon, 16 Nov 2015 16:49:34 -0400