diff options
author | Joey Hess <joey@kitenet.net> | 2014-03-18 18:55:43 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2014-03-18 18:55:43 -0400 |
commit | 2402266d0d9731445af1876327a43795795d1a18 (patch) | |
tree | 2f52191002e8ee79275c2f4e6070b057a61f9389 /Annex | |
parent | 9adb236103d0b8f1db8110b40cc33b9fe5fda4ae (diff) |
Each for each metadata field, there's now an automatically maintained "$field-lastchanged" that gives the timestamp of the last change to that field.
Note that this is a nearly entirely free feature. The data was already
stored in the metadata log in an easily accessible way, and already was
parsed to a time when parsing the log. The generation of the metadata
fields may even be done lazily, although probably not entirely (the map
has to be evaulated to when queried).
Diffstat (limited to 'Annex')
-rw-r--r-- | Annex/MetaData.hs | 17 | ||||
-rw-r--r-- | Annex/MetaData/StandardFields.hs | 38 |
2 files changed, 44 insertions, 11 deletions
diff --git a/Annex/MetaData.hs b/Annex/MetaData.hs index 68aef33f1..f382f0ab1 100644 --- a/Annex/MetaData.hs +++ b/Annex/MetaData.hs @@ -5,11 +5,15 @@ - Licensed under the GNU GPL version 3 or higher. -} -module Annex.MetaData where +module Annex.MetaData ( + genMetaData, + module X +) where import Common.Annex import qualified Annex -import Types.MetaData +import Types.MetaData as X +import Annex.MetaData.StandardFields as X import Logs.MetaData import Annex.CatFile @@ -19,15 +23,6 @@ import Data.Time.Calendar import Data.Time.Clock import Data.Time.Clock.POSIX -tagMetaField :: MetaField -tagMetaField = mkMetaFieldUnchecked "tag" - -yearMetaField :: MetaField -yearMetaField = mkMetaFieldUnchecked "year" - -monthMetaField :: MetaField -monthMetaField = mkMetaFieldUnchecked "month" - {- Adds metadata for a file that has just been ingested into the - annex, but has not yet been committed to git. - diff --git a/Annex/MetaData/StandardFields.hs b/Annex/MetaData/StandardFields.hs new file mode 100644 index 000000000..00b810593 --- /dev/null +++ b/Annex/MetaData/StandardFields.hs @@ -0,0 +1,38 @@ +{- git-annex metadata, standard fields + - + - Copyright 2014 Joey Hess <joey@kitenet.net> + - + - Licensed under the GNU GPL version 3 or higher. + -} + +module Annex.MetaData.StandardFields ( + tagMetaField, + yearMetaField, + monthMetaField, + lastChangedField, + isLastChangedField +) where + +import Types.MetaData + +import Data.List + +tagMetaField :: MetaField +tagMetaField = mkMetaFieldUnchecked "tag" + +yearMetaField :: MetaField +yearMetaField = mkMetaFieldUnchecked "year" + +monthMetaField :: MetaField +monthMetaField = mkMetaFieldUnchecked "month" + +lastChangedField :: MetaField -> MetaField +lastChangedField f = mkMetaFieldUnchecked (fromMetaField f ++ lastchanged) + +isLastChangedField :: MetaField -> Bool +isLastChangedField f = lastchanged `isSuffixOf` s && s /= lastchanged + where + s = fromMetaField f + +lastchanged :: String +lastchanged = "-lastchanged" |