Changes between Version 23 and Version 24 of RepositoryHookSystemPlugin


Ignore:
Timestamp:
Sep 19, 2016, 7:05:48 PM (8 years ago)
Author:
figaro
Comment:

Further cosmetic changes, split functional description and technical description

Legend:

Unmodified
Added
Removed
Modified
  • RepositoryHookSystemPlugin

    v23 v24  
    55== Description
    66
    7 The RepositoryHookSystemPlugin is designed to turn repository hooks, such as SVN's post-commit hook, into extension points so that arbitrary Trac plugins may be built that have full access to the trac framework to act on repository commits.
     7This plugin turns repository hooks, such as SVN's post-commit hook, into extension points so that arbitrary Trac plugins may be built that have full access to the Trac framework to act on repository commits.
    88
    99Key features:
    10 
    1110 * the RepositoryHookSystemPlugin provides an extension point ([source:repositoryhooksystemplugin/0.11/repository_hook_system/interface.py IRepositoryHookSubscriber]) which may be populated with configurable hooks that have access to their trac environment
    12 
    1311 * the RepositoryHookSystemPlugin is able to enable and disable its presence in the SVN hooks directory without affecting other plugins
    14 
    1512 * the [http://trac.edgewall.org/browser/trunk/contrib/trac-post-commit-hook trac-post-commit-hook] has been converted to a configurable plugin that does ticket changes (see source:repositoryhooksystemplugin/0.11/repository_hook_system/ticketchanger.py)
    16 
    17  * has a webadmin interface for configuring hooks including figuring out whether or not the plugin has been enabled on a per-project basis
    18 
     13 * has a Webadmin interface for configuring hooks including figuring out whether or not the plugin has been enabled on a per-project basis
    1914 * plugins can be enabled on a per-hook basis
    20 
    2115 * the listeners are invoked via a command-line call from one of the repository hooks. This is a one-line command that passes whatever details are necessary to identify the changeset.
    22 
    23  * a trac changeset object is used to pass around information. This is good, as it avoids unneccessary information to be sought by the !RepositoryChangeListeners. For the SvnChangeListenerPlugin (at least as it stands living only in the post-commit hook), this is sufficient. It is unknown whether this is a good idea for other hooks and repository systems. A changeset object can be faked if it is not available (like it is at SVN post-commit).
    24 
     16 * a Trac changeset object is used to pass around information. This is good, as it avoids unneccessary information to be sought by the !RepositoryChangeListeners. For the SvnChangeListenerPlugin (at least as it stands living only in the post-commit hook), this is sufficient. It is unknown whether this is a good idea for other hooks and repository systems. A changeset object can be faked if it is not available (like it is at SVN post-commit).
    2517 * the logic of the !RepositoryChangeListeners is agnostic to SCM type and hook used.
    2618 
     19This is what the RepositoryHookSystemPlugin webadmin interface looks like for configuration of an SVN post-commit hook:
     20
     21[[Image(screenshot.png, border=2)]]
     22
     23Example of an SVN post-commit hook file generated by the RepositoryHookSystem that invokes the listener:
     24
     25{{{#!sh
     26#!/bin/bash
     27
     28# trac repository hook system
     29/home/jhammel/20080519133401/bin/python /home/jhammel/20080519133401/src/RepositoryHookSystem/repository_hook_system/listener.py -p /home/jhammel/20080519133401/projects/fooocracy -p /home/jhammel/20080519133401/projects/newproj --hook post-commit $2
     30}}}
     31
     32However, while designed to be generic, this plugin has only been implemented for SVN.
     33
    2734'''Architecture of the RepositoryHookSystemPlugin:'''
    2835
     
    3037
    3138This is similar in concept to the SvnChangeListenerPlugin, but the architecture is also designed to support
    32 
    33  * arbitrary version control systems, with an adapter for the version control system used to an implementation capable of hook invocation
    34 
     39 * arbitrary version control systems, with an adaptor for the version control system used to an implementation capable of hook invocation
    3540 * arbitrary hooks, not just post-commit
    36 
    37 However, while architected to be generic, this plugin has only been implemented for SVN.
    3841
    3942== Bugs/Feature Requests
     
    6164General instructions on installing Trac plugins can be found on the [TracPlugins#InstallingaTracplugin TracPlugins] page.
    6265
    63 == Example
    64 
    65 Screenshot of the RepositoryHookSystemPlugin webadmin interface for configuration of an SVN post-commit hook:
    66 
    67 [[Image(screenshot.png)]]
    68 
    69 Example of an SVN post-commit hook file generated by the RepositoryHookSystem that invokes the listener:
    70 
    71 {{{#!sh
    72 #!/bin/bash
    73 
    74 # trac repository hook system
    75 /home/jhammel/20080519133401/bin/python /home/jhammel/20080519133401/src/RepositoryHookSystem/repository_hook_system/listener.py -p /home/jhammel/20080519133401/projects/fooocracy -p /home/jhammel/20080519133401/projects/newproj --hook post-commit $2
    76 }}}
    77 
    7866== Recent Changes
    7967