post-recive hook to make updateInstead work in direct mode and adjusted branches

* Added post-recieve hook, which makes updateInstead work with direct
  mode and adjusted branches.
* init: Set up the post-receive hook.

This commit was sponsored by Fernando Jimenez on Patreon.
This commit is contained in:
Joey Hess 2017-02-17 14:04:43 -04:00
parent 4594bece40
commit d074532aff
No known key found for this signature in database
GPG key ID: C910D9222512E3C7
12 changed files with 138 additions and 11 deletions

View file

@ -1,11 +1,11 @@
{- git core.sharedRepository handling
{- git config types
-
- Copyright 2012 Joey Hess <id@joeyh.name>
- Copyright 2012, 2017 Joey Hess <id@joeyh.name>
-
- Licensed under the GNU GPL version 3 or higher.
-}
module Git.SharedRepository where
module Git.ConfigTypes where
import Data.Char
@ -14,6 +14,7 @@ import Git
import qualified Git.Config
data SharedRepository = UnShared | GroupShared | AllShared | UmaskShared Int
deriving (Eq)
getSharedRepository :: Repo -> SharedRepository
getSharedRepository r =
@ -26,3 +27,14 @@ getSharedRepository r =
"world" -> AllShared
"everybody" -> AllShared
v -> maybe UnShared UmaskShared (readish v)
data DenyCurrentBranch = UpdateInstead | RefusePush | WarnPush | IgnorePush
deriving (Eq)
getDenyCurrentBranch :: Repo -> DenyCurrentBranch
getDenyCurrentBranch r =
case map toLower $ Git.Config.get "receive.denycurrentbranch" "" r of
"updateinstead" -> UpdateInstead
"warn" -> WarnPush
"ignore" -> IgnorePush
_ -> RefusePush