]> sipb.mit.edu Git - ikiwiki.git/blobdiff - doc/rcs.mdwn
(no commit message)
[ikiwiki.git] / doc / rcs.mdwn
index de686b76725c8541f3679df8ba42a221c69ebc9f..1f6b3c24e5cd504be6bf7668252c975d60856702 100644 (file)
@@ -1,4 +1,4 @@
-[[meta title="Revision Control Systems"]]
+[[!meta title="Revision Control Systems"]]
 
 Ikiwiki supports using several revision control systems for storing page
 histories. 
@@ -6,11 +6,39 @@ histories.
 Ikiwiki started out supporting only [[Subversion|svn]], but the interface
 ikiwiki uses to a revision control system is sufficiently simple and
 generic that it can be adapted to work with many systems by writing a
-[[plugin|plugins/write]]. [[Subversion|svn]] is still a recommended choice
-(since [[Joey]] uses it); [[git]] is another well-tested option.
+[[plugin|plugins/write]]. These days, most people use [[git]].
 
-These are all the supported revision control systems:
-[[inline pages="rcs/* and !*/Discussion and !rcs/details" archive=yes]]
+While all supported revision control systems work well enough for basic
+use, some advanced or special features are not supported in all of them.
+The table below summarises this for each revision control system and
+links to more information about each.
+
+[[!table data="""
+feature             |[[git]]|[[svn]]|[[bzr]]   |[[monotone]]|[[mercurial]]|[[darcs]]|[[tla]]   |[[cvs]]
+[[ikiwiki-makerepo]]|yes    |yes    |yes       |yes         |yes          |yes      |no        |yes
+auto.setup          |yes    |yes    |incomplete|yes         |incomplete   |yes      |incomplete|yes
+`rcs_commit_staged` |yes    |yes    |yes       |yes         |yes          |yes      |no        |yes
+`rcs_rename`        |yes    |yes    |yes       |yes         |yes          |yes      |no        |yes
+`rcs_remove`        |yes    |yes    |yes       |yes         |yes          |yes      |no        |yes
+`rcs_diff`          |yes    |yes    |yes       |yes         |yes          |yes      |yes       |yes
+`rcs_getctime`      |fast   |slow   |slow      |slow        |fast         |slow     |slow      |slow
+`rcs_getmtime`      |fast   |slow   |slow      |slow        |fast         |no       |no        |no
+`rcs_preprevert`    |yes    |no     |no        |no          |no           |no       |no        |no
+`rcs_revert`        |yes    |no     |no        |no          |no           |no       |no        |no
+anonymous push      |yes    |no     |no        |no          |no           |no       |no        |no
+conflict handling   |yes    |yes    |yes       |buggy       |yes          |yes      |yes       |yes
+openid username     |yes    |no     |no        |no          |yes          |yes      |no        |no
+"""]]
+
+Notes:
+
+* Lack of support in [[ikiwiki-makerepo]] or auto.setup can make it harder to
+  set up a wiki using that revision control system.
+* The `rcs_commit_staged` hook is needed to use [[attachments|plugins/attachment]]
+  or [[plugins/comments]].
+* `rcs_getctime` and `rcs_getmtime` may be implemented in a fast way (ie, one log
+  lookup for all files), or very slowly (one lookup per file).
+* Openid username support allows avoiding display of Google's ugly openids.
 
 There is a page with [[details]] about how the different systems work with
 ikiwiki, for the curious.