From 9dffd3d25568eedfddafd67fcd7cc33dacff909b Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 10 Dec 2015 16:07:50 -0400 Subject: [PATCH] add generalized linkAnnex' --- Annex/Content.hs | 21 ++++++++++++++------- doc/todo/smudge.mdwn | 2 ++ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Annex/Content.hs b/Annex/Content.hs index 44f1ad0a02..10a59ae95b 100644 --- a/Annex/Content.hs +++ b/Annex/Content.hs @@ -25,6 +25,7 @@ module Annex.Content ( checkDiskSpace, moveAnnex, linkAnnex, + linkAnnex', LinkAnnexResult(..), sendAnnex, prepSendAnnex, @@ -514,15 +515,21 @@ populatePointerFile k obj f = go =<< isPointerFile f linkAnnex :: Key -> FilePath -> Annex LinkAnnexResult linkAnnex key src = do dest <- calcRepo (gitAnnexLocation key) + modifyContent dest $ linkAnnex' key src dest + +{- Hard links (or copies) src to dest, one of which should be the + - annex object. -} +linkAnnex' :: Key -> FilePath -> FilePath -> Annex LinkAnnexResult +linkAnnex' key src dest = ifM (liftIO $ doesFileExist dest) ( return LinkAnnexNoop - , modifyContent dest $ - ifM (liftIO $ createLinkOrCopy src dest) - ( do - Database.Keys.storeInodeCaches key [dest, src] - return LinkAnnexOk - , return LinkAnnexFailed - ) + , ifM (liftIO $ createLinkOrCopy src dest) + ( do + thawContent dest + Database.Keys.storeInodeCaches key [dest, src] + return LinkAnnexOk + , return LinkAnnexFailed + ) ) data LinkAnnexResult = LinkAnnexOk | LinkAnnexFailed | LinkAnnexNoop diff --git a/doc/todo/smudge.mdwn b/doc/todo/smudge.mdwn index 6259d4a276..dd990afc71 100644 --- a/doc/todo/smudge.mdwn +++ b/doc/todo/smudge.mdwn @@ -325,6 +325,8 @@ files to be unlocked, while the indirect upgrades don't touch the files. #### implementation todo list +* linkAnnex should check disk reserve when it falls back to copying the + file. * Reconcile staged changes into the associated files database, whenever the database is queried. * See if the cases where the Keys database is not used can be -- 2.30.2