38 lines
2.3 KiB
Markdown
38 lines
2.3 KiB
Markdown
[[!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 |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
|
|
"""]]
|
|
|
|
There is a page with [[details]] about how the different systems work with
|
|
ikiwiki, for the curious.
|