summaryrefslogtreecommitdiff
path: root/Logs/Difference.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Logs/Difference.hs')
-rw-r--r--Logs/Difference.hs40
1 files changed, 40 insertions, 0 deletions
diff --git a/Logs/Difference.hs b/Logs/Difference.hs
new file mode 100644
index 000000000..68d624f99
--- /dev/null
+++ b/Logs/Difference.hs
@@ -0,0 +1,40 @@
+{- git-annex difference log
+ -
+ - Copyright 2015 Joey Hess <id@joeyh.name>
+ -
+ - Licensed under the GNU GPL version 3 or higher.
+ -}
+
+module Logs.Difference (
+ recordDifferences,
+ recordedDifferences,
+ recordedDifferencesFor,
+ module Logs.Difference.Pure
+) where
+
+import Data.Monoid
+import Data.Time.Clock.POSIX
+import qualified Data.Map as M
+
+import Common.Annex
+import Types.Difference
+import qualified Annex.Branch
+import Logs
+import Logs.UUIDBased
+import Logs.Difference.Pure
+
+recordDifferences :: Differences -> UUID -> Annex ()
+recordDifferences differences uuid = do
+ ts <- liftIO getPOSIXTime
+ Annex.Branch.change differenceLog $
+ showLog id . changeLog ts uuid (show differences) . parseLog Just
+
+-- Map of UUIDs that have Differences recorded.
+-- If a new version of git-annex has added a Difference this version
+-- doesn't know about, it will contain UnknownDifferences.
+recordedDifferences :: Annex (M.Map UUID Differences)
+recordedDifferences = parseDifferencesLog <$> Annex.Branch.get differenceLog
+
+recordedDifferencesFor :: UUID -> Annex Differences
+recordedDifferencesFor u = fromMaybe mempty . M.lookup u
+ <$> recordedDifferences