e6857e75a6
sync: When syncing with a local repository located on a crippled filesystem, run the post-receive hook there, since it wouldn't get run otherwise. This makes pushing to repos on FAT-formatted removable drives update them when receive.denyCurrentBranch=updateInstead. Made Remote.Git export onLocal, which was cleaned up to not have so many caveats about its use. This commit was sponsored by Jeff Goeke-Smith on Patreon.
27 lines
822 B
Haskell
27 lines
822 B
Haskell
{- git-annex UpdateIntead emulation
|
|
-
|
|
- Copyright 2017 Joey Hess <id@joeyh.name>
|
|
-
|
|
- Licensed under the GNU GPL version 3 or higher.
|
|
-}
|
|
|
|
module Annex.UpdateInstead where
|
|
|
|
import qualified Annex
|
|
import Annex.Common
|
|
import Config
|
|
import Annex.Version
|
|
import Annex.AdjustedBranch
|
|
import Git.Branch
|
|
import Git.ConfigTypes
|
|
|
|
{- receive.denyCurrentBranch=updateInstead does not work in direct mode
|
|
- repositories or when an adjusted branch is checked out, so must be
|
|
- emulated. -}
|
|
needUpdateInsteadEmulation :: Annex Bool
|
|
needUpdateInsteadEmulation = updateinsteadset <&&> (isDirect <||> isadjusted)
|
|
where
|
|
updateinsteadset = (== UpdateInstead) . receiveDenyCurrentBranch
|
|
<$> Annex.getGitConfig
|
|
isadjusted = versionSupportsUnlockedPointers
|
|
<&&> (maybe False (isJust . getAdjustment) <$> inRepo Git.Branch.current)
|