diff --git a/Annex/VariantFile.hs b/Annex/VariantFile.hs index 7eee545ec7..acab1e8281 100644 --- a/Annex/VariantFile.hs +++ b/Annex/VariantFile.hs @@ -10,6 +10,8 @@ module Annex.VariantFile where import Annex.Common import Utility.Hash +import qualified Data.ByteString.Lazy as L + variantMarker :: String variantMarker = ".variant-" @@ -34,10 +36,10 @@ mkVariant file variant = takeDirectory file -} variantFile :: FilePath -> Key -> FilePath variantFile file key - | doubleconflict = mkVariant file (serializeKey key) - | otherwise = mkVariant file (shortHash $ serializeKey key) + | doubleconflict = mkVariant file (keyFile key) + | otherwise = mkVariant file (shortHash $ serializeKey' key) where doubleconflict = variantMarker `isInfixOf` file -shortHash :: String -> String -shortHash = take 4 . show . md5 . encodeBL +shortHash :: L.ByteString -> String +shortHash = take 4 . show . md5 diff --git a/CHANGELOG b/CHANGELOG index 21c7d5c4e2..e44ee49d0d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -27,6 +27,8 @@ git-annex (7.20181212) UNRELEASED; urgency=medium * Improve uuid.log parser to preserve whitespace in repo descriptions. * Improve activity.log parser to not remove unknown values, allowing for future expansion. + * addunused, merge, assistant: Avoid creating work tree files in + subdirectories in an edge case where the key contains "/". -- Joey Hess Tue, 18 Dec 2018 12:24:52 -0400 diff --git a/Command/AddUnused.hs b/Command/AddUnused.hs index 0ac2316122..b07d2ba20f 100644 --- a/Command/AddUnused.hs +++ b/Command/AddUnused.hs @@ -32,7 +32,7 @@ perform key = next $ do addLink file key Nothing return True where - file = "unused." ++ serializeKey key + file = "unused." ++ keyFile key {- The content is not in the annex, but in another directory, and - it seems better to error out, rather than moving bad/tmp content into