summaryrefslogtreecommitdiff
path: root/Logs/MetaData.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Logs/MetaData.hs')
-rw-r--r--Logs/MetaData.hs19
1 files changed, 18 insertions, 1 deletions
diff --git a/Logs/MetaData.hs b/Logs/MetaData.hs
index 63314bcef..6702c3733 100644
--- a/Logs/MetaData.hs
+++ b/Logs/MetaData.hs
@@ -28,10 +28,10 @@
module Logs.MetaData (
getCurrentMetaData,
- getMetaData,
addMetaData,
addMetaData',
currentMetaData,
+ copyMetaData,
) where
import Common.Annex
@@ -135,3 +135,20 @@ simplifyLog s = case sl of
where
older = value l
unique = older `differenceMetaData` newer
+
+{- Copies the metadata from the old key to the new key.
+ -
+ - The exact content of the metadata file is copied, so that the timestamps
+ - remain the same, and because this is more space-efficient in the git
+ - repository.
+ -
+ - Any metadata already attached to the new key is not preserved.
+ -}
+copyMetaData :: Key -> Key -> Annex ()
+copyMetaData oldkey newkey
+ | oldkey == newkey = noop
+ | otherwise = do
+ l <- getMetaData oldkey
+ unless (S.null l) $
+ Annex.Branch.change (metaDataLogFile newkey) $
+ const $ showLog l