summaryrefslogtreecommitdiff
path: root/doc/rcs.mdwn
blob: 4e7a8d2a67b0378222e6924dfc32a70d2b1c39d9 (plain)

[[!meta title="Revision Control Systems"]]

Ikiwiki supports using several revision control systems for storing page 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; [[git]] is another well-tested option.

While all supported revision control systems work well enough for basic use, some advanced or special features are not supported in all of them. 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]]. And so on. 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 |no |yes |no |yes rcs_rename |yes |yes |yes |yes |no |yes |no |yes rcs_remove |yes |yes |yes |yes |no |yes |no |yes rcs_diff |yes |yes |yes |yes |no |yes |yes |yes anonymous push |yes |no |no |no |no |no |no |no conflict handling |yes |yes |yes |buggy |yes |yes |yes |yes """]]

There is a page with [[details]] about how the different systems work with ikiwiki, for the curious.