From bf4c5f82de894139789136457c04dd048956c617 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 28 Sep 2017 12:56:35 -0400 Subject: Warn when metadata is inherited from a previous version of a file to avoid the user being surprised in cases where that behavior is not desired or expected This commit was supported by the NSF-funded DataLad project. --- Annex/MetaData.hs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'Annex/MetaData.hs') diff --git a/Annex/MetaData.hs b/Annex/MetaData.hs index 6642c3615..e22ed05a6 100644 --- a/Annex/MetaData.hs +++ b/Annex/MetaData.hs @@ -39,12 +39,20 @@ import Data.Time.Clock.POSIX -} genMetaData :: Key -> FilePath -> FileStatus -> Annex () genMetaData key file status = do - maybe noop (`copyMetaData` key) =<< catKeyFileHEAD file + v <- catKeyFileHEAD file + case v of + Nothing -> noop + Just oldkey -> + whenM (copyMetaData oldkey key) + warncopied whenM (annexGenMetaData <$> Annex.getGitConfig) $ do curr <- getCurrentMetaData key addMetaData key (dateMetaData mtime curr) where mtime = posixSecondsToUTCTime $ realToFrac $ modificationTime status + warncopied = warning $ + "Copied metadata from old version of " ++ file ++ " to new version. " ++ + "If you don't want this copied metadata, run: git annex metadata --remove-all " ++ file {- Generates metadata for a file's date stamp. - Does not overwrite any existing metadata values. -} -- cgit v1.2.3