# [`ansible-role-gitolite`][]

An [Ansible][] [role][] for deploying [gitolite][] on [Debian][] >=9.

Installs [gitolite][], creates a [dedicated user][] to run it (defaults to
`git`), prepares for [administering gitolite directly on the server][], allows
(explicit) [user created repos][] with [multiple `OWNERS`][] and `user/USER/*`
[personal branches][] for `USERS`, allows users to run [`symbolic-ref`][] (e.g.
to change `HEAD`, the default branch), prepares for [integration with a
webserver][] (including acting as a [`git-http-backend`][] replacement, and
serving repos without the `.git` suffix), allows [custom local code][], and
prepares for [easy usage][`git-multihook`] of [custom local hooks][].

[`ansible-role-gitolite`]: https://git.rcrnstn.net/rcrnstn/ansible-role-gitolite
[Ansible]: https://docs.ansible.com/ansible
[role]: https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html
[gitolite]: https://gitolite.com
[Debian]: https://www.debian.org
[dedicated user]: https://gitolite.com/gitolite/concepts#the-hosting-user
[administering gitolite directly on the server]: https://gitolite.com/gitolite/odds-and-ends#administering-gitolite-directly-on-the-server
[user created repos]: https://gitolite.com/gitolite/odds-and-ends#giving-users-their-own-repos
[multiple `OWNERS`]: https://gitolite.com/gitolite/wild#specifying-owners
[personal branches]: https://gitolite.com/gitolite/user#personal-branches
[`symbolic-ref`]: https://git-scm.com/docs/git-symbolic-ref
[integration with a webserver]: https://gitolite.com/gitolite/gitweb-daemon.html
[`git-http-backend`]: https://git-scm.com/docs/git-http-backend
[custom local code]: https://gitolite.com/gitolite/non-core.html#using-the-gitolite-admin-repo-to-manage-non-core-code
[`git-multihook`]: https://git.rcrnstn.net/rcrnstn/git-multihook
[custom local hooks]: https://gitolite.com/gitolite/cookbook#adding-other-non-update-hooks

## Try out

A stand-in [`site.yml`][] [playbook][] is provided, use it with

```
ansible-playbook -K -i $host, site.yml
```

(note the comma!) replacing `$host` with the host you want to set up (can be
`localhost`, perhaps adding `--connection=local`).

A [`Vagrantfile`][] that uses it is also provided, try it out with the usual
[`vagrant up`][].

[`site.yml`]: site.yml
[playbook]: https://docs.ansible.com/ansible/latest/user_guide/playbooks.html
[`Vagrantfile`]: Vagrantfile
[`vagrant up`]: https://www.vagrantup.com/docs/cli/up.html

## License

Licensed under the [ISC License][] unless otherwise noted, see the
[`LICENSE`][] file.

[ISC License]: https://choosealicense.com/licenses/isc/
[`LICENSE`]: LICENSE
