summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Command/Map.hs9
-rw-r--r--debian/changelog7
2 files changed, 12 insertions, 4 deletions
diff --git a/Command/Map.hs b/Command/Map.hs
index 8755bc7c2..6b1e8d5bb 100644
--- a/Command/Map.hs
+++ b/Command/Map.hs
@@ -138,15 +138,16 @@ spider' (r:rs) known
-- The remotes will be relative to r', and need to be
-- made absolute for later use.
- let remotes = map (absRepo r') (Git.remotes r')
+ remotes <- mapM (absRepo r') (Git.remotes r')
let r'' = Git.remotesAdd r' remotes
spider' (rs ++ remotes) (r'':known)
-absRepo :: Git.Repo -> Git.Repo -> Git.Repo
+{- Converts repos to a common absolute form. -}
+absRepo :: Git.Repo -> Git.Repo -> Annex Git.Repo
absRepo reference r
- | Git.repoIsUrl reference = Git.localToUrl reference r
- | otherwise = r
+ | Git.repoIsUrl reference = return $ Git.localToUrl reference r
+ | otherwise = liftIO $ Git.repoFromAbsPath =<< absPath (Git.workTree r)
{- Checks if two repos are the same. -}
same :: Git.Repo -> Git.Repo -> Bool
diff --git a/debian/changelog b/debian/changelog
index 41c251b84..7feb8f8ca 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+git-annex (3.20111204) UNRELEASED; urgency=low
+
+ * map: Fix a failure to detect a loop when both repositories are local
+ and refer to each other with relative paths.
+
+ -- Joey Hess <joeyh@debian.org> Sun, 04 Dec 2011 12:22:37 -0400
+
git-annex (3.20111203) unstable; urgency=low
* The VFAT filesystem on recent versions of Linux, when mounted with