git-annex-shell: Runs hooks/annex-content after content is received or dropped.
This commit is contained in:
parent
59e2feeda1
commit
caf97fcffd
4 changed files with 28 additions and 3 deletions
|
@ -7,8 +7,10 @@
|
||||||
|
|
||||||
module Command.Commit where
|
module Command.Commit where
|
||||||
|
|
||||||
|
import Common.Annex
|
||||||
import Command
|
import Command
|
||||||
import qualified Annex.Branch
|
import qualified Annex.Branch
|
||||||
|
import qualified Git
|
||||||
|
|
||||||
def :: [Command]
|
def :: [Command]
|
||||||
def = [command "commit" paramNothing seek
|
def = [command "commit" paramNothing seek
|
||||||
|
@ -20,4 +22,7 @@ seek = [withNothing start]
|
||||||
start :: CommandStart
|
start :: CommandStart
|
||||||
start = next $ next $ do
|
start = next $ next $ do
|
||||||
Annex.Branch.commit "update"
|
Annex.Branch.commit "update"
|
||||||
return True
|
runhook =<< (inRepo $ Git.hookPath "annex-content")
|
||||||
|
where
|
||||||
|
runhook (Just hook) = liftIO $ boolSystem hook []
|
||||||
|
runhook Nothing = return True
|
||||||
|
|
14
Git.hs
14
Git.hs
|
@ -24,12 +24,14 @@ module Git (
|
||||||
gitDir,
|
gitDir,
|
||||||
configTrue,
|
configTrue,
|
||||||
attributes,
|
attributes,
|
||||||
|
hookPath,
|
||||||
assertLocal,
|
assertLocal,
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import qualified Data.Map as M
|
import qualified Data.Map as M
|
||||||
import Data.Char
|
import Data.Char
|
||||||
import Network.URI (uriPath, uriScheme, unEscapeString)
|
import Network.URI (uriPath, uriScheme, unEscapeString)
|
||||||
|
import System.Directory
|
||||||
|
|
||||||
import Common
|
import Common
|
||||||
import Git.Types
|
import Git.Types
|
||||||
|
@ -93,17 +95,25 @@ configBare repo = maybe unknown (fromMaybe False . configTrue) $
|
||||||
" is a bare repository; config not read"
|
" is a bare repository; config not read"
|
||||||
|
|
||||||
{- Path to a repository's gitattributes file. -}
|
{- Path to a repository's gitattributes file. -}
|
||||||
attributes :: Repo -> String
|
attributes :: Repo -> FilePath
|
||||||
attributes repo
|
attributes repo
|
||||||
| configBare repo = workTree repo ++ "/info/.gitattributes"
|
| configBare repo = workTree repo ++ "/info/.gitattributes"
|
||||||
| otherwise = workTree repo ++ "/.gitattributes"
|
| otherwise = workTree repo ++ "/.gitattributes"
|
||||||
|
|
||||||
{- Path to a repository's .git directory. -}
|
{- Path to a repository's .git directory. -}
|
||||||
gitDir :: Repo -> String
|
gitDir :: Repo -> FilePath
|
||||||
gitDir repo
|
gitDir repo
|
||||||
| configBare repo = workTree repo
|
| configBare repo = workTree repo
|
||||||
| otherwise = workTree repo </> ".git"
|
| 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.
|
{- Path to a repository's --work-tree, that is, its top.
|
||||||
-
|
-
|
||||||
- Note that for URL repositories, this is the path on the remote host. -}
|
- Note that for URL repositories, this is the path on the remote host. -}
|
||||||
|
|
2
debian/changelog
vendored
2
debian/changelog
vendored
|
@ -16,6 +16,8 @@ git-annex (3.20120310) UNRELEASED; urgency=low
|
||||||
adjusted as desired to tune the bloom filter.
|
adjusted as desired to tune the bloom filter.
|
||||||
* status: Display about of memory used by bloom filter, and
|
* status: Display about of memory used by bloom filter, and
|
||||||
detect then it's too small for the number of keys in a repository.
|
detect then it's too small for the number of keys in a repository.
|
||||||
|
* git-annex-shell: Runs hooks/annex-content after content is received
|
||||||
|
or dropped.
|
||||||
|
|
||||||
-- Joey Hess <joeyh@debian.org> Sat, 10 Mar 2012 14:03:22 -0400
|
-- Joey Hess <joeyh@debian.org> Sat, 10 Mar 2012 14:03:22 -0400
|
||||||
|
|
||||||
|
|
|
@ -49,6 +49,7 @@ first "/~/" or "/~user/" is expanded to the specified home directory.
|
||||||
* commit
|
* commit
|
||||||
|
|
||||||
This commits any staged changes to the git-annex branch.
|
This commits any staged changes to the git-annex branch.
|
||||||
|
It also runs the annex-content hook.
|
||||||
|
|
||||||
# OPTIONS
|
# OPTIONS
|
||||||
|
|
||||||
|
@ -60,6 +61,13 @@ to git-annex-shell are:
|
||||||
git-annex uses this to specify the UUID of the repository it was expecting
|
git-annex uses this to specify the UUID of the repository it was expecting
|
||||||
git-annex-shell to access, as a sanity check.
|
git-annex-shell to access, as a sanity check.
|
||||||
|
|
||||||
|
# HOOK
|
||||||
|
|
||||||
|
After content is received or dropped from the repository by git-annex-shell,
|
||||||
|
it runs a hook, `.git/hooks/annex-content` (or `hooks/annex-content` on a bare
|
||||||
|
repository). The hook is not currently passed any information about what
|
||||||
|
changed.
|
||||||
|
|
||||||
# ENVIRONMENT
|
# ENVIRONMENT
|
||||||
|
|
||||||
* GIT_ANNEX_SHELL_READONLY
|
* GIT_ANNEX_SHELL_READONLY
|
||||||
|
|
Loading…
Reference in a new issue