From 12422e98901cef2774b15ec0e6468e88d4d0a6c6 Mon Sep 17 00:00:00 2001 From: joey Date: Tue, 2 May 2006 18:44:39 +0000 Subject: [PATCH] * 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. --- IkiWiki.pm | 9 +++++---- IkiWiki/Rcs/{SVN.pm => svn.pm} | 0 IkiWiki/Wrapper.pm | 2 +- Makefile.PL | 2 +- debian/NEWS | 12 ++++++++++++ debian/changelog | 10 +++++++++- doc/ikiwiki.setup | 4 ++-- doc/plugins.mdwn | 13 +++++++------ doc/plugins/write.mdwn | 10 ++++++++++ doc/usage.mdwn | 15 ++++++++------- ikiwiki | 7 +++++-- 11 files changed, 60 insertions(+), 24 deletions(-) rename IkiWiki/Rcs/{SVN.pm => svn.pm} (100%) create mode 100644 debian/NEWS 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 similarity index 100% rename from IkiWiki/Rcs/SVN.pm rename to 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 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 Tue, 2 May 2006 10:56:33 -0400 + -- Joey Hess 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]/;