git-annex-shell: Runs hooks/annex-content after content is received or dropped.

This commit is contained in:
Joey Hess 2012-03-14 12:01:56 -04:00
parent 59e2feeda1
commit caf97fcffd
4 changed files with 28 additions and 3 deletions

14
Git.hs
View file

@ -24,12 +24,14 @@ module Git (
gitDir,
configTrue,
attributes,
hookPath,
assertLocal,
) where
import qualified Data.Map as M
import Data.Char
import Network.URI (uriPath, uriScheme, unEscapeString)
import System.Directory
import Common
import Git.Types
@ -93,17 +95,25 @@ configBare repo = maybe unknown (fromMaybe False . configTrue) $
" is a bare repository; config not read"
{- Path to a repository's gitattributes file. -}
attributes :: Repo -> String
attributes :: Repo -> FilePath
attributes repo
| configBare repo = workTree repo ++ "/info/.gitattributes"
| otherwise = workTree repo ++ "/.gitattributes"
{- Path to a repository's .git directory. -}
gitDir :: Repo -> String
gitDir :: Repo -> FilePath
gitDir repo
| configBare repo = workTree repo
| otherwise = workTree repo </> ".git"
{- Path to a given hook script in a repository, only if the hook exists
- and is executable. -}
hookPath :: String -> Repo -> IO (Maybe FilePath)
hookPath script repo = do
let hook = gitDir repo </> "hooks" </> script
ok <- doesFileExist hook
return $ if ok then Just hook else Nothing
{- Path to a repository's --work-tree, that is, its top.
-
- Note that for URL repositories, this is the path on the remote host. -}