Custom scripts¶
Since version 0.3.0 the plugin supports custom shell scripts which can be executed when a repository is created and when a repository is deleted. One can use these scripts to set permissions after a repository has been created, to archive a repository before it gets removed etc.
Script types¶
Scripts (pathes to them) must be specified in the configuration file scm.yml
:
production:
pre_create: /usr/local/bin/pre-create.sh
post_create: /usr/local/bin/post-create.sh
pre_delete: /usr/local/bin/pre-delete.sh
post_delete: /usr/local/bin/post-delete.sh
pre_
scripts get executed before an action (before creation or before deletion). And post_
scripts get called after an action (after creation or after deletion).
In most cases you will want to use post_create
and/or pre_delete
scripts.
Arguments¶
All scripts are called with the following arguments:
- Path to the repository root (e.g.
/var/lib/svn/project
); - Repository type (e.g.
svn
); - Project identifier (e.g.
scm-creator
).
Possible values1 for the second argument (repository type):
svn
- for Subversion;git
- for Git;mercurial
- for Mercurial;bazaar
- for Bazaar.github
- for Github.
Custom fields¶
You can use custom fields to pass aditional parameters to scripts.
Project custom fields (if their values are set, of course) are automatically made availabe to scripts as environment variables. The name of such environment variable begins with SCM_CUSTOM_FIELD_
. The rest is formed from the custom field name. For example, custom field "Project type" will be available as SCM_CUSTOM_FIELD_PROJECT_TYPE
.
Note: The environment variable name is obtained by replacing all non-latin characters, non-numbers and non-underscore by _
.
Sample script¶
This is a skeleton which can be used as a template for scripts:
#!/bin/sh
SCM_REPO_PATH=$1
SCM_TYPE=$2
SCM_PROJECT=$3
SCM_REPO_NAME=$(basename $SCM_REPO_PATH)
SCM_REPO_ROOT=$(dirname $SCM_REPO_PATH)
case "$SCM_TYPE" in
svn)
;;
git)
;;
mercurial)
;;
bazaar)
;;
github)
;;
*)
echo "SCM not supported: $SCM_TYPE" >&2
;;
esac
exit 0
1 this is actually a list of currently supported SCMs