sync hack to make updateInstead work on eg FAT
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.
This commit is contained in:
parent
00464fbed7
commit
e6857e75a6
6 changed files with 88 additions and 50 deletions
27
Annex/UpdateInstead.hs
Normal file
27
Annex/UpdateInstead.hs
Normal file
|
@ -0,0 +1,27 @@
|
|||
{- 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)
|
Loading…
Add table
Add a link
Reference in a new issue