diff options
Diffstat (limited to 'Assistant/MakeRemote.hs')
-rw-r--r-- | Assistant/MakeRemote.hs | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/Assistant/MakeRemote.hs b/Assistant/MakeRemote.hs index f49237157..43b046bc9 100644 --- a/Assistant/MakeRemote.hs +++ b/Assistant/MakeRemote.hs @@ -16,6 +16,7 @@ import qualified Remote.Rsync as Rsync import qualified Remote.GCrypt as GCrypt import qualified Git import qualified Git.Command +import qualified Annex import qualified Annex.SpecialRemote import Logs.UUID import Logs.Remote @@ -122,26 +123,26 @@ makeGitRemote basename location = makeRemote basename location $ \name -> - Returns the name of the remote. -} makeRemote :: String -> String -> (RemoteName -> Annex ()) -> Annex RemoteName makeRemote basename location a = do - g <- gitRepo - if not (any samelocation $ Git.remotes g) + rs <- Annex.getGitRemotes + if not (any samelocation rs) then do - let name = uniqueRemoteName basename 0 g + let name = uniqueRemoteName basename 0 rs a name return name else return basename where samelocation x = Git.repoLocation x == location -{- Generate an unused name for a remote, adding a number if - - necessary. +{- Given a list of all remotes, generate an unused name for a new + - remote, adding a number if necessary. - - Ensures that the returned name is a legal git remote name. -} -uniqueRemoteName :: String -> Int -> Git.Repo -> RemoteName -uniqueRemoteName basename n r +uniqueRemoteName :: String -> Int -> [Git.Repo] -> RemoteName +uniqueRemoteName basename n rs | null namecollision = name - | otherwise = uniqueRemoteName legalbasename (succ n) r + | otherwise = uniqueRemoteName legalbasename (succ n) rs where - namecollision = filter samename (Git.remotes r) + namecollision = filter samename rs samename x = Git.remoteName x == Just name name | n == 0 = legalbasename |