aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-05-02 18:44:39 +0000
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-05-02 18:44:39 +0000
commit12422e98901cef2774b15ec0e6468e88d4d0a6c6 (patch)
tree715e817132d8b80c5d27c23c1afd4a62e50742ed
parent47cec07e4441a06bb741910a329215d4d6ad0a86 (diff)
downloadikiwiki-12422e98901cef2774b15ec0e6468e88d4d0a6c6.tar
ikiwiki-12422e98901cef2774b15ec0e6468e88d4d0a6c6.tar.gz
* 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.
-rw-r--r--IkiWiki.pm9
-rw-r--r--IkiWiki/Rcs/svn.pm (renamed from IkiWiki/Rcs/SVN.pm)0
-rw-r--r--IkiWiki/Wrapper.pm2
-rwxr-xr-xMakefile.PL2
-rw-r--r--debian/NEWS12
-rw-r--r--debian/changelog10
-rw-r--r--doc/ikiwiki.setup4
-rw-r--r--doc/plugins.mdwn13
-rw-r--r--doc/plugins/write.mdwn10
-rw-r--r--doc/usage.mdwn15
-rwxr-xr-xikiwiki7
11 files changed, 60 insertions, 24 deletions
diff --git a/IkiWiki.pm b/IkiWiki.pm
index 31228883f..e3bdc8d83 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -23,13 +23,14 @@ sub checkconfig () { #{{{
$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}}) {
diff --git a/IkiWiki/Rcs/SVN.pm b/IkiWiki/Rcs/svn.pm
index b45b69197..b45b69197 100644
--- a/IkiWiki/Rcs/SVN.pm
+++ b/IkiWiki/Rcs/svn.pm
diff --git a/IkiWiki/Wrapper.pm b/IkiWiki/Wrapper.pm
index e5f718f71..ee547cefb 100644
--- a/IkiWiki/Wrapper.pm
+++ b/IkiWiki/Wrapper.pm
@@ -36,7 +36,7 @@ sub gen_wrapper () { #{{{
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"
diff --git a/Makefile.PL b/Makefile.PL
index 91ba6c50d..df119d5f0 100755
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -13,7 +13,7 @@ pure_install:: extra_install
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
diff --git a/debian/NEWS b/debian/NEWS
new file mode 100644
index 000000000..1b05f36e8
--- /dev/null
+++ b/debian/NEWS
@@ -0,0 +1,12 @@
+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
diff --git a/debian/changelog b/debian/changelog
index dfb9faab6..c9d9ab1e0 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -28,8 +28,16 @@ ikiwiki (1.1) UNRELEASED; urgency=low
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
diff --git a/doc/ikiwiki.setup b/doc/ikiwiki.setup
index 87a19aefc..d6ca7bb0b 100644
--- a/doc/ikiwiki.setup
+++ b/doc/ikiwiki.setup
@@ -20,8 +20,8 @@ use IkiWiki::Setup::Standard {
#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",
diff --git a/doc/plugins.mdwn b/doc/plugins.mdwn
index 6f4127e78..7773e71a9 100644
--- a/doc/plugins.mdwn
+++ b/doc/plugins.mdwn
@@ -1,13 +1,14 @@
-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
@@ -23,4 +24,4 @@ for a list of the directories in that path. All plugins are in the
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`
diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn
index c4f668373..7bbde94fa 100644
--- a/doc/plugins/write.mdwn
+++ b/doc/plugins/write.mdwn
@@ -71,3 +71,13 @@ use the following hashes, using a page name as the key:
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.
diff --git a/doc/usage.mdwn b/doc/usage.mdwn
index c4d1f5818..c30d799fd 100644
--- a/doc/usage.mdwn
+++ b/doc/usage.mdwn
@@ -90,17 +90,18 @@ These options configure the wiki.
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
diff --git a/ikiwiki b/ikiwiki
index 75114bb66..af90d2288 100755
--- a/ikiwiki
+++ b/ikiwiki
@@ -22,7 +22,7 @@ sub getconfig () { #{{{
wikiname => "wiki",
default_pageext => ".mdwn",
cgi => 0,
- svn => 1,
+ rcs => 'svn',
notify => 0,
url => '',
cgiurl => '',
@@ -58,7 +58,8 @@ sub getconfig () { #{{{
"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},
@@ -71,6 +72,8 @@ sub getconfig () { #{{{
"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]/;