diff --git a/Annex/UUID.hs b/Annex/UUID.hs index 872fb9091a..8986f2d7a0 100644 --- a/Annex/UUID.hs +++ b/Annex/UUID.hs @@ -41,6 +41,7 @@ import Config import qualified Data.UUID as U import qualified Data.UUID.V4 as U4 import qualified Data.UUID.V5 as U5 +import qualified Data.ByteString as S import Data.String configkeyUUID :: ConfigKey @@ -53,13 +54,13 @@ genUUID = toUUID <$> U4.nextRandom {- Generates a UUID from a given string, using a namespace. - Given the same namespace, the same string will always result - in the same UUID. -} -genUUIDInNameSpace :: U.UUID -> String -> UUID -genUUIDInNameSpace namespace = toUUID . U5.generateNamed namespace . s2w8 +genUUIDInNameSpace :: U.UUID -> S.ByteString -> UUID +genUUIDInNameSpace namespace = toUUID . U5.generateNamed namespace . S.unpack {- Namespace used for UUIDs derived from git-remote-gcrypt ids. -} gCryptNameSpace :: U.UUID gCryptNameSpace = U5.generateNamed U5.namespaceURL $ - s2w8 "http://git-annex.branchable.com/design/gcrypt/" + S.unpack "http://git-annex.branchable.com/design/gcrypt/" {- Get current repository's UUID. -} getUUID :: Annex UUID diff --git a/Assistant/WebApp/Configurators/Ssh.hs b/Assistant/WebApp/Configurators/Ssh.hs index 86065b8fc4..04ac8ceb1d 100644 --- a/Assistant/WebApp/Configurators/Ssh.hs +++ b/Assistant/WebApp/Configurators/Ssh.hs @@ -319,7 +319,7 @@ testServer sshinput@(SshInput { inputHostname = Just hn }) = do finduuid (k, v) | k == "annex.uuid" = Just $ toUUID v | k == fromConfigKey GCrypt.coreGCryptId = - Just $ genUUIDInNameSpace gCryptNameSpace v + Just $ genUUIDInNameSpace gCryptNameSpace (encodeBS v) | otherwise = Nothing checkcommand c = "if which " ++ c ++ "; then " ++ report c ++ "; fi" diff --git a/Command/GCryptSetup.hs b/Command/GCryptSetup.hs index fe2f06ad9b..ae17702cce 100644 --- a/Command/GCryptSetup.hs +++ b/Command/GCryptSetup.hs @@ -29,7 +29,7 @@ start gcryptid = starting "gcryptsetup" (ActionItemOther Nothing) (SeekInput [gc g <- gitRepo gu <- Remote.GCrypt.getGCryptUUID True g - let newgu = genUUIDInNameSpace gCryptNameSpace gcryptid + let newgu = genUUIDInNameSpace gCryptNameSpace (encodeBS gcryptid) if isNothing gu || gu == Just newgu then if Git.repoIsLocalBare g then do diff --git a/Remote/GCrypt.hs b/Remote/GCrypt.hs index 213265dfa2..d9a581596d 100644 --- a/Remote/GCrypt.hs +++ b/Remote/GCrypt.hs @@ -112,7 +112,7 @@ gen baser u rc gc rs = do -- that is now available. Also need to set the gcrypt particiants -- correctly. resetup gcryptid r = do - let u' = genUUIDInNameSpace gCryptNameSpace gcryptid + let u' = genUUIDInNameSpace gCryptNameSpace (encodeBS gcryptid) v <- M.lookup u' <$> remoteConfigMap case (Git.remoteName baser, v) of (Just remotename, Just rc') -> do @@ -263,7 +263,7 @@ gCryptSetup _ mu _ c gc = go $ fromProposedAccepted <$> M.lookup gitRepoField c case Git.GCrypt.remoteRepoId g (Just remotename) of Nothing -> giveup "unable to determine gcrypt-id of remote" Just gcryptid -> do - let u = genUUIDInNameSpace gCryptNameSpace gcryptid + let u = genUUIDInNameSpace gCryptNameSpace (encodeBS gcryptid) if Just u == mu || isNothing mu then do method <- setupRepo gcryptid =<< inRepo (Git.Construct.fromRemoteLocation gitrepo False) @@ -489,7 +489,7 @@ toAccessMethod _ = AccessRsyncOverSsh getGCryptUUID :: Bool -> Git.Repo -> Annex (Maybe UUID) getGCryptUUID fast r = do dummycfg <- liftIO dummyRemoteGitConfig - (genUUIDInNameSpace gCryptNameSpace <$>) . fst + (genUUIDInNameSpace gCryptNameSpace . encodeBS <$>) . fst <$> getGCryptId fast r dummycfg coreGCryptId :: ConfigKey diff --git a/Remote/Git.hs b/Remote/Git.hs index 157499aa25..180d522d04 100644 --- a/Remote/Git.hs +++ b/Remote/Git.hs @@ -327,7 +327,7 @@ tryGitConfigRead autoinit r hasuuid case Git.GCrypt.remoteRepoId g (Git.remoteName r) of Nothing -> return r Just v -> storeUpdatedRemote $ liftIO $ setUUID r $ - genUUIDInNameSpace gCryptNameSpace v + genUUIDInNameSpace gCryptNameSpace (encodeBS v) {- The local repo may not yet be initialized, so try to initialize - it if allowed. However, if that fails, still return the read diff --git a/Utility/Data.hs b/Utility/Data.hs index faf9b34ecc..af8c5580b5 100644 --- a/Utility/Data.hs +++ b/Utility/Data.hs @@ -10,12 +10,8 @@ module Utility.Data ( firstJust, eitherToMaybe, - s2w8, - w82s, ) where -import Data.Word - {- First item in the list that is not Nothing. -} firstJust :: Eq a => [Maybe a] -> Maybe a firstJust ms = case dropWhile (== Nothing) ms of @@ -24,15 +20,3 @@ firstJust ms = case dropWhile (== Nothing) ms of eitherToMaybe :: Either a b -> Maybe b eitherToMaybe = either (const Nothing) Just - -c2w8 :: Char -> Word8 -c2w8 = fromIntegral . fromEnum - -w82c :: Word8 -> Char -w82c = toEnum . fromIntegral - -s2w8 :: String -> [Word8] -s2w8 = map c2w8 - -w82s :: [Word8] -> String -w82s = map w82c