From a5e968bb8d4c608c33463160ea2b583a3e34b8fc Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 18 Sep 2017 13:57:25 -0400 Subject: add ExportTree table to export db New table needed to look up what filenames are used in the currently exported tree, for reasons explained in export.mdwn. Also, added smart constructors for ExportLocation and ExportDirectory to make sure they contain filepaths with the right direction slashes. And some code refactoring. This commit was sponsored by Francois Marier on Patreon. --- Annex/Export.hs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Annex/Export.hs (limited to 'Annex') diff --git a/Annex/Export.hs b/Annex/Export.hs new file mode 100644 index 000000000..0afe3cdcc --- /dev/null +++ b/Annex/Export.hs @@ -0,0 +1,35 @@ +{- git-annex exports + - + - Copyright 2017 Joey Hess + - + - Licensed under the GNU GPL version 3 or higher. + -} + +module Annex.Export where + +import Annex +import Annex.CatFile +import Types.Key +import qualified Git + +-- An export includes both annexed files and files stored in git. +-- For the latter, a SHA1 key is synthesized. +data ExportKey = AnnexKey Key | GitKey Key + deriving (Show, Eq, Ord) + +asKey :: ExportKey -> Key +asKey (AnnexKey k) = k +asKey (GitKey k) = k + +exportKey :: Git.Sha -> Annex ExportKey +exportKey sha = mk <$> catKey sha + where + mk (Just k) = AnnexKey k + mk Nothing = GitKey $ Key + { keyName = show sha + , keyVariety = SHA1Key (HasExt False) + , keySize = Nothing + , keyMtime = Nothing + , keyChunkSize = Nothing + , keyChunkNum = Nothing + } -- cgit v1.2.3