Metadata-Version: 1.1
Name: cpthook
Version: 0.0.1
Summary: Centrally manage hooks for git repositories
Home-page: https://github.com/aelse/cpthook
Author: Alexander Else
Author-email: aelse@else.id.au
License: BSD
Description: CptHook
        =======
        
        If you use a central repository manager such as gitolite or gitosis you
        probably have at least a few repositories using custom git hooks.
        
        CptHook allows you to manage all your hooks from the one location.
        
        Configuration Example
        =====================
        
        Here's a basic cpthook config adding a single hook to a single repository.
        
        I have created a hook.cfg file under /repos/cpthook-admin,
        which is a repository used just to store the cpthook config and any of
        the hook scripts that we wish to manage.
        
            [cpthook]
            script-path = /repos/cpthook-admin/hooks.d
            repo-path = /repos
        
            [repos apu_repos]
            members = testrepo
            hooks = test_hooks
        
            [hooks test_hooks]
            post-commit = test-post-commit.sh
        
        In the hooks.d directory I have a post-commit directory with a test
        script: hooks.d/post-commit/test-post-commit.sh
        
            #!/bin/bash
            # Example hook script
        
            echo -e "\e[0;33mThis is a test hook script saying hi.\e[0m"
            exit 0
        
        To activate the hooks I've enabled in the configuration file, I run
        
            $ cpthook --config=hook.cfg --init
        
        If no errors are reported then a wrapper script should have been
        installed as the post-commit hook for my testrepo.  The script will
        run cpthook instructing it to run the post-commit hooks configured for
        this repository.  
        
        The path of the hook will vary depending on whether it is a bare
        repository or not. In my case it can be found at:
        /repos/testrepo/.git/hooks/post-commit
        
        Now when I commit a change to this repository the hook script I've
        configured will run.
        
            $ date > somefile; git commit -a -m "test"
            This is a test hook script saying hi.
            [master 0d895ef] test
             1 file changed, 1 insertion(+), 1 deletion(-)
        
        Getting Started
        ===============
        
        You can install cpthook either system-wide or (better) into a
        virtualenv. Clone this repo and within it run:
        
            $ python setup.py install
        
        Providing it has installed correctly try the basic configuration example
        given above on a local repository. Check that the permissions are
        correct for your scripts under hooks.d. If the wrapper script has been
        installed but the hooks don't seem to be firing you can attempt to run
        cpthook manually by changing directory to the repository and running the
        command from the wrapper script. eg:
        
            $ cd /repos/testrepo
            $ cpthook --config=/repos/cpthook-admin/hook.cfg --hook=post-commit
        
        Once this is working have a look at the full configuration example to
        see how you can make use of groups to simply applying the same hooks
        to many repositories.
        
        Full Configuration Example
        ==========================
        
        This example demonstrates the grouping features you can use in your
        cpthook config to chain group memberships together.
        
        A cpthook configuration file uses the python `ConfigParser` syntax.
        
            [cpthook]
            # Contains global configuration elements.
        
            # The hooks.d directory pointed to by script-path contains directories
            # named by hook type  eg. post-commit, update.
            # Hook scripts go into those directories.
            # A single script-path is supported.
            script-path = /path/to/hooks.d
        
            # One or more paths to locations where git repos may be found
            # eg. if repo-path = /tmp then repository 'foo' may be found
            # in /tmp/foo or perhaps /tmp/foo.git
            # Multiple paths may be specified.
            repo-path = /path/to/git/repos /more/git/repos
            
            # A cpthook config file contains repos and hooks.
            # repos define managed repositories
            # hooks define which hooks are used by repositories
            
            [repos my_repos_1]
            # Each repos group may contain zero or more git repositories
            # matching the directory names on the filesystem.
            # A repository will be matched with or without a .git suffix
            members = some_repo other_repo.git
            
            [repos my_repos_2]
            # A group may inherit members from another repo group with the
            # syntax @<group_name>
            members = another_repo @my_repos_1
            
            [repos repos_with_hooks]
            # And of course repo groups can refer to hook groups
            members = @my_repos_1
            hooks = some_hooks
            
            [repos inherit_hooks]
            # Hooks may also be inherited from repos groups
            members = @my_repos_2
            hooks = @repos_with_hooks
            
            [hooks some_hooks]
            # Lists of hooks may be defined for hook types supported by git
            # Referenced scripts are separated on the filesystem by hook type
            # eg. hooks.d/pre-receive/validate_style.sh
            pre-receive = validate_style.sh
            post-receive = trigger_build.sh
        
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: Other/Proprietary License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.3
Classifier: Topic :: Software Development
Classifier: Topic :: System :: Systems Administration
