* Patch from Thomas Schwinge to switch from --svn to --rcs=svn, etc,
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Tue, 2 May 2006 18:44:39 +0000 (18:44 +0000)
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Tue, 2 May 2006 18:44:39 +0000 (18:44 +0000)
  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
IkiWiki/Rcs/svn.pm [moved from IkiWiki/Rcs/SVN.pm with 100% similarity]
IkiWiki/Wrapper.pm
Makefile.PL
debian/NEWS [new file with mode: 0644]
debian/changelog
doc/ikiwiki.setup
doc/plugins.mdwn
doc/plugins/write.mdwn
doc/usage.mdwn
ikiwiki

index 31228883f3cdd83945b34b611902f17fb0c7de02..e3bdc8d83c8739b9e3a140788026aca2d58ab306 100644 (file)
@@ -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}}) {
similarity index 100%
rename from IkiWiki/Rcs/SVN.pm
rename to IkiWiki/Rcs/svn.pm
index e5f718f710422f71c425df5f74070697a45123cd..ee547cefb9e7945ea12015a3197a2a79737e3fa7 100644 (file)
@@ -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"
index 91ba6c50df975ade5547554455f9a1c86985dc35..df119d5f0771ce2164de5c3e382d985f12255d12 100755 (executable)
@@ -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 (file)
index 0000000..1b05f36
--- /dev/null
@@ -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
index dfb9faab6b7f76a577256835495c095cf8a68ea6..c9d9ab1e0fa0634228431288873e482f9b650553 100644 (file)
@@ -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
 
index 87a19aefc738c560f4c8b76cea0bfc5ae46dcce0..d6ca7bb0bfc27fbfae523e55e8e77b6d8f578185 100644 (file)
@@ -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",
 
index 6f4127e78e6181e595b56444d8d16772b4e9322a..7773e71a9ea17bdee09bf1bd780aa50ced38340c 100644 (file)
@@ -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`
index c4f668373024d2a18fce28ed264c4c412e8e89a9..7bbde94fa0f61778ef55c66fbdf8c28f9b12d9ca 100644 (file)
@@ -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.
index c4d1f5818627b9327e8c583a416a182fec079748..c30d799fdb9aa6a6020c19313eaad86779747c1b 100644 (file)
@@ -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 75114bb662925bfa09b9f0d4a3683f11f6d41079..af90d22880a6a126e15fe16eb1f4d1014294d320 100755 (executable)
--- 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]/;