On each commit of Ruby's Git repository, following git hooks are triggered:
- Verify committer email from
SVN_ACCOUNT_NAME
associated to SSH key used forgit push
- Reject merge commits (ask @mame about why)
- Send notification to ruby-cvs@ruby-lang.org
- Commit automatic styling:
- remove trailing spaces
- append newline at EOF
- expand tabs
- Update version.h if date is changed
- Request Redmine to fetch changesets
- Mirror cgit to GitHub
- Notify committer's Slack
/data/svn/repos/ruby
: SVN repository of Rubyhooks/post-commit
: Run/home/git/ruby-commit-hook/hooks/post-commit.sh
/data/git/ruby.git
: Bare Git repository of rubyhooks/post-receive
: Run/home/git/ruby-commit-hook/hooks/post-receive.sh
/home/git/ruby-commit-hook
: Cloned Git repository of ruby-commit-hook
- There's a symlink
/var/git
->/data/git
. - User
git
's$HOME
is NOT/home/git
but/var/git
.
git push
to ruby-commit-hook's master branch automatically updates them.- ruby-commit-hook push webhook triggers
cgi-bin/webhook.cgi
- It runs
sudo -u git bin/update-ruby-commit-hook.sh
- ruby-commit-hook push webhook triggers
Note: git.ruby-lang.org.conf
(in /etc/apache2/sites-available
) is managed
in this repository.
To apply apache2 config changes, once the webhook finishes, run:
sudo /etc/init.d/apache2 reload
- Add your gem repository name to
DEFAULT_GEM_REPOS
in cgi-bin/webhook.cgi, and push it to master. - Go to
https://github.com/ruby/{repo_name}/settings/hooks
, and add a webhook- Payload URL: Set the content of
~git/config/ruby-commit-hook-url
in git.ruby-lang.org - Content type: application/json
- Secret: Set the content of
~git/config/ruby-commit-hook-secret
in git.ruby-lang.org - Which events: Just the push event.
- Payload URL: Set the content of