Difference between revisions of "Begiak's git plugin"

From Apertium
Jump to navigation Jump to search
m (Add reference to modules/svnpoller.py)
(Document creation of webhooks)
Line 12: Line 12:
 
Begiak's case, Begiak prints out information about commits as they come in to
 
Begiak's case, Begiak prints out information about commits as they come in to
 
the IRC channels it is present on and notifies administrators.
 
the IRC channels it is present on and notifies administrators.
  +
  +
A webhook consists of two parts: the service that sends updates and the hook that handles them. Many services are now offering the option to enable webhooks, and you can configure them to send updates to your hook handler(s). Creating handlers is also very easy, as they are simply HTTP servers which accept POST requests containing commit information sent by a service. Each POST request usually contains information about the repository, revision number, author, commit message, added/modified/deleted files, etc. which can all be retrieved using a secret code that the service provides. Begiak implements its handler by deriving it from Python's
  +
[https://docs.python.org/3/library/http.server.html#http.server.SimpleHTTPRequestHandler SimpleHTTPRequestHandler]
  +
and defining its POST handler to get the data.
   
 
Begiak receives updates from GitHub, Google Code, and Bitbucket. The hook module
 
Begiak receives updates from GitHub, Google Code, and Bitbucket. The hook module

Revision as of 05:52, 2 January 2015

Begiak has a git plugin that is a post-receive hooks module for the sites it receives commit updates from. The plugin can also provide information about the most recent commits for each repository, and information about individual commits for monitored repositories. The sources for the plugin are in modules/git.py.


Post-receive Hook

A post-receive hook is a script or bot which performs certain actions on receiving updates about commits from sites like GitHub and bitbucket. In Begiak's case, Begiak prints out information about commits as they come in to the IRC channels it is present on and notifies administrators.

A webhook consists of two parts: the service that sends updates and the hook that handles them. Many services are now offering the option to enable webhooks, and you can configure them to send updates to your hook handler(s). Creating handlers is also very easy, as they are simply HTTP servers which accept POST requests containing commit information sent by a service. Each POST request usually contains information about the repository, revision number, author, commit message, added/modified/deleted files, etc. which can all be retrieved using a secret code that the service provides. Begiak implements its handler by deriving it from Python's SimpleHTTPRequestHandler and defining its POST handler to get the data.

Begiak receives updates from GitHub, Google Code, and Bitbucket. The hook module is started automatically when Begiak is started and connects to an IRC network. All users can check the status of the hook server with

   .gitserver status

and administrators can manually start and stop the server with

   .gitserver start
   .gitserver stop

The command `stopserver' is the same as `.gitserver stop'.


Recent Commits

Begiak can get information for the most recent commits for the repositories it monitors. The command

   begiak: recent OR
   begiak, recent

will print the commit reports.


Commit Information

Begiak can get commit information for a specified repository and revision. The command

   begiak: info <repo> <rev> OR
   begiak, info <repo> <rev>

will print the commit report. Note that this module does not try to handle SVN repositories (they are handled by modules/svnpoller.py) and other repositories it does not monitor.