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.
This commit is contained in:
Joey Hess 2015-01-28 13:47:41 -04:00
parent 354de19cbe
commit ba3825441c
8 changed files with 42 additions and 90 deletions

View file

@ -135,7 +135,7 @@ gitAnnexLocation' key r config crippled
-}
| Git.repoIsLocalBare r
|| crippled
|| hasDifference (== ObjectHashLower True) (annexDifferences config) =
|| hasDifference (== ObjectHashLower) (annexDifferences config) =
check $ map inrepo $ annexLocations key
{- Non-bare repositories only use hashDirMixed, so
- don't need to do any work to check if the file is