$config{wikistatedir}="$config{srcdir}/.ikiwiki"
unless exists $config{wikistatedir};
- if ($config{svn}) {
- require IkiWiki::Rcs::SVN;
- $config{rcs}=1;
+ if ($config{rcs}) {
+ eval qq{require IkiWiki::Rcs::$config{rcs}};
+ if ($@) {
+ error("Failed to load RCS module IkiWiki::Rcs::$config{rcs}: $@");
+ }
}
else {
require IkiWiki::Rcs::Stub;
- $config{rcs}=0;
}
foreach my $plugin (@{$config{plugin}}) {
asprintf(&newenviron[i++], "%s=%s", "$var", s);
EOF
}
- if ($config{svn} && $config{notify}) {
+ if ($config{rcs} eq "svn" && $config{notify}) {
# Support running directly as hooks/post-commit by passing
# $2 in REV in the environment.
$envsave.=<<"EOF"
extra_build:
./ikiwiki doc html --templatedir=templates --underlaydir=basewiki \
- --wikiname="ikiwiki" --verbose --nosvn \
+ --wikiname="ikiwiki" --verbose --no-rcs \
--exclude=/discussion --plugin=brokenlinks \
--plugin=pagecount --plugin=orphans
./mdwn2man doc/usage.mdwn > ikiwiki.man
--- /dev/null
+ikiwiki (1.1) unstable; urgency=low
+
+ The --svn and --no-svn switches are removed, instead you should use
+ --rcs=svn or --no-rcs. ikiwiki setup files that set svn => 1 should
+ be changed to set rcs => "svn"; if your setup file sets svn => 0
+ then change it to use rcs => "" to disable svn.
+
+ You will need to rebuild your wiki when upgrading to this version.
+ If you listed your wiki in /etc/ikiwiki/wikilist this will be done
+ automatically.
+
+ -- Joey Hess <joeyh@debian.org> Tue, 2 May 2006 14:13:59 -0400
it, this will allow for adding a unit test suite.
* Add a unit test for globlist_match().
* Smart globlist merging.
+ * Patch from Thomas Schwinge to switch from --svn to --rcs=svn, etc,
+ to pave the way for adding other RCS support. This also changes the
+ setup files, where before they had svn => 1 or svn => 0, now they have
+ rcs => "svn" or rcs => "".
+ * Add a debian/NEWS file with upgrade notes.
+ * Load whatever rcs module is specified, so new ones can be just dropped in
+ as plugins and work.
+ * Add some basic docs about writing RCS modules.
- -- Joey Hess <joeyh@debian.org> Tue, 2 May 2006 10:56:33 -0400
+ -- Joey Hess <joeyh@debian.org> Tue, 2 May 2006 14:13:59 -0400
ikiwiki (1.0) unstable; urgency=low
#diffurl => "http://svn.someurl/trunk/[[file]]?root=wiki&r1=[[r1]]&r2=[[r2]]",
#templatedir => "/usr/share/ikiwiki/templates",
- # Whether to integrate with svn.
- svn => 1,
+ #rcs => "", # don't use svn
+ rcs => "svn", # use svn (the default)
svnrepo => "/svn/wiki",
svnpath => "trunk",
-Plugins can be used to add additional features to ikiwiki. It's possible to
-[[write]] your own plugins, or you can install and use plugins contributed by
-others.
+Plugins can be used to add additional features to ikiwiki. Ikiwiki's
+backend RCS support is also pluggable, so support for new revision control
+systems can be added to ikiwiki. It's possible to [[write]] your own plugins,
+or you can install and use plugins contributed by others.
The ikiiki package includes some standard plugins that are installed and
by default. These include [[inline]], [[pagecount]], and [[brokenlinks]].
Of these, [[inline]] is enabled by default.
-To enable other plugins, use the `--plugin` switch described in [[usage]], or the equivilant line in
-[[ikiwiki.setup]].
+To enable other plugins, use the `--plugin` switch described in [[usage]],
+or the equivalent line in [[ikiwiki.setup]].
## Plugin directory
IkiWiki::Plugin namespace, so they go in a IkiWiki/Plugin subdirectory
inside the perl search path. For example, if your perl looks in
`/usr/local/lib/site_perl` for modules, you can locally install ikiwiki
-plugins to `/usr/local/lib/site_perl/IkiWiki/Plugin`
\ No newline at end of file
+plugins to `/usr/local/lib/site_perl/IkiWiki/Plugin`
Many plugins will need to add dependencies to this hash; the best way to do
it is by using the IkiWiki::add_depends function, which takes as its
parameters the page name and a [[GlobList]] of dependencies to add.
+
+## RCS plugins
+
+ikiwiki's support for revision control systems also uses pluggable perl
+modules. These are in the `IkiWiki::RCS` namespace, for example
+`IkiWiki::RCS::svn`.
+
+Each RCS plugin must support all the IkiWiki::rcs_* functions.
+See IkiWiki::RCS::Stub for the full list of functions. It's ok if
+rcs_getctime does nothing except for throwing an error.
Enable email notification of commits. This should be used when running
ikiwiki as a [[Subversion]] [[post-commit]] hook.
-* --svn, --nosvn
+* --rcs=svn, --no-rcs
- Enable or disable use of [[subversion]]. If subversion is enabled, the
- `source` directory is assumed to be a working copy, and is automatically
- updated before building the wiki.
+ Enable or disable use of a revision control system.
- In [[CGI]] mode, with subversion enabled pages edited via the web will be
- committed to subversion. Also, the [[RecentChanges]] link will be placed
+ If you use svn ([[Subversion]]), the `source` directory is assumed to be
+ a working copy, and is automatically updated before building the wiki.
+
+ In [[CGI]] mode, with a revision control system enabled pages edited via
+ the web will be committed. Also, the [[RecentChanges]] link will be placed
on pages.
- Subversion is enabled by default.
+ svn is enabled by default.
* --svnrepo /svn/wiki
wikiname => "wiki",
default_pageext => ".mdwn",
cgi => 0,
- svn => 1,
+ rcs => 'svn',
notify => 0,
url => '',
cgiurl => '',
"refresh!" => \$config{refresh},
"getctime" => \$config{getctime},
"wrappermode=i" => \$config{wrappermode},
- "svn!" => \$config{svn},
+ "rcs=s" => \$config{rcs},
+ "no-rcs" => sub { $config{rcs}="" },
"anonok!" => \$config{anonok},
"hyperestraier" => \$config{hyperestraier},
"rss!" => \$config{rss},
"diffurl=s" => \$config{diffurl},
"svnrepo" => \$config{svnrepo},
"svnpath" => \$config{svnpath},
+ "rcs=s" => \$config{rcs},
+ "no-rcs" => sub { $config{rcs}="" },
"adminemail=s" => \$config{adminemail},
"exclude=s@" => sub {
$config{wiki_file_prune_regexp}=qr/$config{wiki_file_prune_regexp}|$_[1]/;