diff options
author | 2015-01-28 13:47:41 -0400 | |
---|---|---|
committer | 2015-01-28 13:50:02 -0400 | |
commit | f351b887265f0abce8d52ffcb7b9b2ee7bd8bc81 (patch) | |
tree | c7cb719e91b82bee7f4ea8e74732dd3f3d4dc103 /Logs | |
parent | 6a8efb186432cd9b8fa7a61f8129303f5bcc9e1f (diff) |
rework Differences data type
Eliminated complexity and future proofed. The most important change is that
all functions over Difference are now total; any Difference that can be
expressed should be handled. Avoids needs for sanity checking of inputs,
and version skew with the future.
Also, the difference.log now serializes a [Difference], not a Differences.
This saves space and keeps it simpler.
Note that [Difference] might contain conflicting differences (eg,
[Version5, Version6]. In this case, one of them needs to consistently win
over the others, probably based on Ord.
Diffstat (limited to 'Logs')
-rw-r--r-- | Logs/Difference.hs | 3 | ||||
-rw-r--r-- | Logs/Difference/Pure.hs | 2 |
2 files changed, 3 insertions, 2 deletions
diff --git a/Logs/Difference.hs b/Logs/Difference.hs index 68d624f99..fcebffee9 100644 --- a/Logs/Difference.hs +++ b/Logs/Difference.hs @@ -24,10 +24,11 @@ import Logs.UUIDBased import Logs.Difference.Pure recordDifferences :: Differences -> UUID -> Annex () -recordDifferences differences uuid = do +recordDifferences (Differences differences) uuid = do ts <- liftIO getPOSIXTime Annex.Branch.change differenceLog $ showLog id . changeLog ts uuid (show differences) . parseLog Just +recordDifferences UnknownDifferences _ = return () -- Map of UUIDs that have Differences recorded. -- If a new version of git-annex has added a Difference this version diff --git a/Logs/Difference/Pure.hs b/Logs/Difference/Pure.hs index 76d995a01..bbd4d348d 100644 --- a/Logs/Difference/Pure.hs +++ b/Logs/Difference/Pure.hs @@ -19,7 +19,7 @@ import Logs.UUIDBased parseDifferencesLog :: String -> (M.Map UUID Differences) parseDifferencesLog = simpleMap - . parseLog (Just . fromMaybe UnknownDifferences . readish) + . parseLog (Just . maybe UnknownDifferences Differences . readish) -- The sum of all recorded differences, across all UUIDs. allDifferences :: M.Map UUID Differences -> Differences |