update the status here, this actually works fairly well
[ikiwiki] / doc / rcs.mdwn
1 [[!meta title="Revision Control Systems"]]
2
3 Ikiwiki supports using several revision control systems for storing page
4 histories. 
5
6 Ikiwiki started out supporting only [[Subversion|svn]], but the interface
7 ikiwiki uses to a revision control system is sufficiently simple and
8 generic that it can be adapted to work with many systems by writing a
9 [[plugin|plugins/write]]. These days, most people use [[git]].
10
11 While all supported revision control systems work well enough for basic
12 use, some advanced or special features are not supported in all of them.
13 The table below summarises this for each revision control system and
14 links to more information about each.
15
16 [[!table data="""
17 feature             |[[git]]|[[svn]]|[[bzr]]   |[[monotone]]|[[mercurial]]|[[darcs]]|[[tla]]   |[[cvs]]
18 [[ikiwiki-makerepo]]|yes    |yes    |yes       |yes         |yes          |yes      |no        |yes
19 auto.setup          |yes    |yes    |incomplete|yes         |incomplete   |yes      |incomplete|yes
20 `rcs_commit_staged` |yes    |yes    |yes       |yes         |yes          |yes      |no        |yes
21 `rcs_rename`        |yes    |yes    |yes       |yes         |yes          |yes      |no        |yes
22 `rcs_remove`        |yes    |yes    |yes       |yes         |yes          |yes      |no        |yes
23 `rcs_diff`          |yes    |yes    |yes       |yes         |yes          |yes      |yes       |yes
24 `rcs_getctime`      |fast   |slow   |slow      |slow        |fast         |slow     |slow      |slow
25 `rcs_getmtime`      |fast   |slow   |slow      |slow        |fast         |no       |no        |no
26 `rcs_preprevert`    |yes    |no     |no        |no          |no           |no       |no        |no
27 `rcs_revert`        |yes    |no     |no        |no          |no           |no       |no        |no
28 anonymous push      |yes    |no     |no        |no          |no           |no       |no        |no
29 conflict handling   |yes    |yes    |yes       |buggy       |yes          |yes      |yes       |yes
30 openid username     |yes    |no     |no        |no          |yes          |yes      |no        |no
31 """]]
32
33 Notes:
34
35 * Lack of support in [[ikiwiki-makerepo]] or auto.setup can make it harder to
36   set up a wiki using that revision control system.
37 * The `rcs_commit_staged` hook is needed to use [[attachments|plugins/attachment]]
38   or [[plugins/comments]].
39 * `rcs_getctime` and `rcs_getmtime` may be implemented in a fast way (ie, one log
40   lookup for all files), or very slowly (one lookup per file).
41 * Openid username support allows avoiding display of Google's ugly openids.
42
43 There is a page with [[details]] about how the different systems work with
44 ikiwiki, for the curious.