2007-02-22 07:33:23 +01:00
|
|
|
[[meta title="Git"]]
|
|
|
|
|
2007-10-21 02:57:10 +02:00
|
|
|
[Git][git] is a distributed revison control system originally developed for
|
|
|
|
the Linux kernel. Ikiwiki supports storing a wiki in git.
|
2007-09-12 18:03:38 +02:00
|
|
|
|
|
|
|
[git]: http://git.or.cz/
|
2006-06-11 21:13:52 +02:00
|
|
|
|
2007-11-27 06:34:17 +01:00
|
|
|
Ikiwiki can run as a `post-update` hook to update a wiki whenever commits
|
2006-06-11 21:16:01 +02:00
|
|
|
come in. When running as a [[cgi]] with Git, ikiwiki automatically
|
2007-10-21 02:57:10 +02:00
|
|
|
commits edited pages, and uses the Git history to generate the
|
|
|
|
[[RecentChanges]] page.
|
2007-08-30 18:03:07 +02:00
|
|
|
|
2007-11-27 06:34:17 +01:00
|
|
|
## git repository setup
|
2007-09-12 18:03:38 +02:00
|
|
|
|
2007-11-27 06:34:17 +01:00
|
|
|
When using Git, you probably want to set up two repositories, of which
|
|
|
|
one should be bare (meaning that it does not have a working tree
|
|
|
|
checked out), and the other one with a working tree will be used as
|
|
|
|
ikiwiki's srcdir for compiling the wiki. [[ikiwiki-makerepo]] can automate
|
|
|
|
setting this up. Using a pair of repositories isn't the most obvious set up,
|
|
|
|
but it works the best for typical ikiwiki use.
|
|
|
|
[[tips/Laptop_wiki_with_git]] describes a different way to set up ikiwiki
|
|
|
|
and git.
|
|
|
|
|
|
|
|
It is **paramount** that you **never** push to the non-bare repository
|
|
|
|
([this FAQ entry explains why](http://git.or.cz/gitwiki/GitFaq#head-b6a3d85f677763313159eb39f7dbf4579d4ee28b)).
|
|
|
|
Instead, if you want to work on the wiki from a remote machine, clone
|
|
|
|
the bare repository, using either the `git` transport (if available), or
|
|
|
|
`ssh`.
|
|
|
|
|
|
|
|
The ikiwiki `post-commit` hook should be put in the bare repository.
|
2007-11-27 18:41:18 +01:00
|
|
|
|
|
|
|
## git repository with multiple committers
|
|
|
|
|
|
|
|
It can be tricky to get the permissions right to allow multiple people to
|
|
|
|
commit to an ikiwiki git repository. As the [[security]] page mentions,
|
|
|
|
for a secure ikiwiki installation, only one person should be able to write
|
|
|
|
to ikiwiki's srcdir. When other committers make commits, their commits
|
|
|
|
should go to the bare repository, which has a `post-update` hook that uses
|
|
|
|
ikiwiki to pull the changes to the srcdir.
|
|
|
|
|
|
|
|
One setup that will work is to put all committers in a group (say,
|
|
|
|
ikiwiki), and use permissions to allow that group to commit to the bare git
|
|
|
|
repository. Make both the post-update hook and ikiwiki.cgi be setgid
|
|
|
|
to the group, as well as suid to the user who admins the wiki. The
|
|
|
|
`wrappergroup` [[setup_file_option|usage]] can be used to make the wrappers
|
|
|
|
be setgid to the right group. Then the srcdir, including its git
|
|
|
|
repository, should only be writable by the wiki's admin, and *not* by the
|
|
|
|
group. Take care that ikiwiki uses a umask that does not cause files in
|
|
|
|
the srcdir to become group writable. (umask 022 will work.)
|