don't disable smudge filter while merging
The smudge filter does need to be run, because if the key is in the local annex already (due to renaming, or a copy of a file added, or a new file added and its content has already arrived), git merge smudges the file and this should provide its content. This does probably mean that in merge conflict resolution, git smudges the existing file, re-copying all its content to it, and then the file is deleted. So, not efficient.
This commit is contained in:
parent
24bbaa2346
commit
996ae9b172
2 changed files with 2 additions and 17 deletions
|
@ -30,7 +30,6 @@ import Annex.VariantFile
|
|||
import qualified Database.Keys
|
||||
import Annex.InodeSentinal
|
||||
import Utility.InodeCache
|
||||
import Command.Smudge (withSmudgeDisabled)
|
||||
|
||||
import qualified Data.Set as S
|
||||
import qualified Data.Map as M
|
||||
|
@ -50,8 +49,7 @@ autoMergeFrom branch currbranch commitmode = do
|
|||
where
|
||||
go old = ifM isDirect
|
||||
( mergeDirect currbranch old branch (resolveMerge old branch) commitmode
|
||||
-- Avoid smudge filter populating files while merging.
|
||||
, withSmudgeDisabled (Git.Merge.mergeNonInteractive branch commitmode)
|
||||
, inRepo (Git.Merge.mergeNonInteractive branch commitmode)
|
||||
<||> (resolveMerge old branch <&&> commitResolvedMerge commitmode)
|
||||
)
|
||||
|
||||
|
|
|
@ -19,9 +19,6 @@ import Utility.InodeCache
|
|||
import Types.KeySource
|
||||
import Backend
|
||||
import Logs.Location
|
||||
import Annex.Index (addGitEnv)
|
||||
import Utility.Env
|
||||
import qualified Git
|
||||
import qualified Database.Keys
|
||||
|
||||
import qualified Data.ByteString.Lazy as B
|
||||
|
@ -59,7 +56,7 @@ smudge file = do
|
|||
-- don't provide such modified content as it
|
||||
-- will be confusing. inAnnex will detect such
|
||||
-- modifications.
|
||||
ifM ((not <$> smudgeDisabled) <&&> inAnnex k)
|
||||
ifM (inAnnex k)
|
||||
( do
|
||||
content <- calcRepo (gitAnnexLocation k)
|
||||
liftIO $ B.putStr . fromMaybe b
|
||||
|
@ -69,16 +66,6 @@ smudge file = do
|
|||
Database.Keys.addAssociatedFile k file
|
||||
stop
|
||||
|
||||
-- Environment variable to disable smudging providing the content of keys.
|
||||
smudgeDisabled :: Annex Bool
|
||||
smudgeDisabled = liftIO $ isJust <$> getEnv smudgeDisableEnv
|
||||
|
||||
smudgeDisableEnv :: String
|
||||
smudgeDisableEnv = "ANNEX_SMUDGE_DISABLE"
|
||||
|
||||
withSmudgeDisabled :: (Git.Repo -> IO a) -> Annex a
|
||||
withSmudgeDisabled a = inRepo $ \r -> addGitEnv r smudgeDisableEnv "1" >>= a
|
||||
|
||||
-- Clean filter is fed file content on stdin, decides if a file
|
||||
-- should be stored in the annex, and outputs a pointer to its
|
||||
-- injested content.
|
||||
|
|
Loading…
Add table
Reference in a new issue