summaryrefslogtreecommitdiff
path: root/doc/rcs.mdwn
blob: 450d16800b247c275429abaffa5508f23fea0182 (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]]. rcs_getctime may be implemented in a fast way (ie, one log lookup for all files), or very slowly (one lookup per file). 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 rcs_getctime |fast |slow |slow |slow |slow |slow |slow |slow rcs_getmtime |fast |slow |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 """]]

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