diff options
author | Joey Hess <joeyh@joeyh.name> | 2015-03-20 14:52:58 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2015-03-20 14:52:58 -0400 |
commit | 9cd0833c28e4e8f9d4f45b3913e7540bdbeacb91 (patch) | |
tree | 7bd7442a613311a0b442b06208912d10fcc5f4e4 | |
parent | 6d9ef07751656dfd996ff283570054586469bc99 (diff) |
Added a post-update-annex hook, which is run after the git-annex branch is updated. Needed for git update-server-info.
-rw-r--r-- | Annex/Branch.hs | 19 | ||||
-rw-r--r-- | Annex/Hook.hs | 3 | ||||
-rw-r--r-- | debian/changelog | 2 | ||||
-rw-r--r-- | doc/git-annex.mdwn | 8 |
4 files changed, 23 insertions, 9 deletions
diff --git a/Annex/Branch.hs b/Annex/Branch.hs index 6ce711996..7cd86c581 100644 --- a/Annex/Branch.hs +++ b/Annex/Branch.hs @@ -55,6 +55,7 @@ import Annex.ReplaceFile import qualified Annex.Queue import Annex.Branch.Transitions import qualified Annex +import Annex.Hook {- Name of the branch that is used to store git-annex's information. -} name :: Git.Ref @@ -166,13 +167,16 @@ updateTo pairs = do mapM_ checkBranchDifferences refs mergeIndex jl refs let commitrefs = nub $ fullname:refs - unlessM (handleTransitions jl localtransitions commitrefs) $ do - ff <- if dirty - then return False - else inRepo $ Git.Branch.fastForward fullname refs - if ff - then updateIndex jl branchref - else commitIndex jl branchref merge_desc commitrefs + ifM (handleTransitions jl localtransitions commitrefs) + ( runAnnexHook postUpdateAnnexHook + , do + ff <- if dirty + then return False + else inRepo $ Git.Branch.fastForward fullname refs + if ff + then updateIndex jl branchref + else commitIndex jl branchref merge_desc commitrefs + ) liftIO cleanjournal {- Gets the content of a file, which may be in the journal, or in the index @@ -384,6 +388,7 @@ setIndexSha ref = do f <- fromRepo gitAnnexIndexStatus liftIO $ writeFile f $ fromRef ref ++ "\n" setAnnexFilePerm f + runAnnexHook postUpdateAnnexHook {- Stages the journal into the index and returns an action that will - clean up the staged journal files, which should only be run once diff --git a/Annex/Hook.hs b/Annex/Hook.hs index 253c77a60..1c17e03b4 100644 --- a/Annex/Hook.hs +++ b/Annex/Hook.hs @@ -25,6 +25,9 @@ preCommitHook = Git.Hook "pre-commit" (mkHookScript "git annex pre-commit .") preCommitAnnexHook :: Git.Hook preCommitAnnexHook = Git.Hook "pre-commit-annex" "" +postUpdateAnnexHook :: Git.Hook +postUpdateAnnexHook = Git.Hook "post-update-annex" "" + mkHookScript :: String -> String mkHookScript s = unlines [ shebang_local diff --git a/debian/changelog b/debian/changelog index 0578cb2a5..2cd3cdb70 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,8 @@ git-annex (5.20150318) UNRELEASED; urgency=medium * readpresentkey: New plumbing command for checking location log. * checkpresentkey: New plumbing command to check if a key can be verified to be present on a remote. + * Added a post-update-annex hook, which is run after the git-annex branch + is updated. Needed for git update-server-info. -- Joey Hess <id@joeyh.name> Thu, 19 Mar 2015 17:05:32 -0400 diff --git a/doc/git-annex.mdwn b/doc/git-annex.mdwn index 7cd02fb63..8e56f42b5 100644 --- a/doc/git-annex.mdwn +++ b/doc/git-annex.mdwn @@ -1953,8 +1953,12 @@ used by git-annex. to start the git-annex assistant in. `.git/hooks/pre-commit-annex` in your git repository will be run whenever -a commit is made, either by git commit, git-annex sync, or the git-annex -assistant. +a commit is made to the HEAD branch, either by git commit, git-annex +sync, or the git-annex assistant. + +`.git/hooks/post-update-annex` in your git repository will be run +whenever the git-annex branch is updated. You can make this hook run +`git update-server-info` when publishing a git-annex repository by http. # SEE ALSO |