
- About svnwiki
- License
- Mailing list
- Limitations
- Features
- Documentation
- Sample installations
- Alternatives
- Authors
- Requirements
- Wiki Format
- External Links
About svnwiki
Svnwiki is a wiki application that stores content in a Subversion repository. Like other wiki systems, it provides a web interface for browsing and modifying the information. However, it is also possible to work with the regular Subversion commands (such as svn log, svn diff, svn checkout, svn commit, etc.) that some users may feel more comfortable with.
You are currently reading an article handled by svnwiki (you can see a list of example wikis).
Svnwiki is written in the Scheme programming language and runs under Common Gateway Interface in the Chicken Scheme implementation calling Subversion's libsvn_client C library. It was developed as a set of multiple Chicken modules (eggs), most having a clearly documented application programming interface that allows easy reuse in other applications.
It is under active development. We're working very hard to get all the things in our roadmap implemented that we believe are important before making our 1.0 release.
If you come across errors or have suggestions, check our bugs database to see if they have already been reported or list them there so they can be fixed. Consult the install file if you want to use it.
License
Svnwiki is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. There is absolutely no warranty for Svnwiki.
Mailing list
We have a mailing list about Svnwiki, where you can contact the developers and other users. To write to the list send your message to <svnwiki@listas.el-directorio.org>. Note that messages sent to that address will go to all the users of the mailing list. The list was initialized on October 15th, 2006.
You can find more information about the mailing list:
Limitations
The following might be limitations of Svnwiki, depending on your intent:
- Limitations we will probably never remove:
- Does not support editing multiple files in a single commit. Sure, a web-based application for editing the contents of Subversion repositories allowing a user to modify multiple files in a single commit is not hard to implement; that, however, is not the goal of Svnwiki, as the interface to support such functionality would probably make this tool less useful as a wiki-system. The authors don't consider this a limitation but rather an advantage.
- Limitations we may remove some day:
- Runs under CGI, which might make it unacceptably slow for sites with heavy loads. Page views are served from static files; it is edits and history that requires the CGI application. Should performance be a concern, one could probably get Svnwiki to work with the Spiffy web-server or with mod_lisp.
You may also want to consult our bugs database.
Features
The following are a few of the features already supported by Svnwiki:
- Since the wiki contents are stored in a Subversion repository, you can use any program that operates on a Subversion repository directly on your wiki contents. For example:
- You can svn checkout your wiki contents, edit them directly with any text-editor and then svn commit or svn diff them. You can view your wiki's changes using svn log.
- You can use any tool to generate plots from a Subversion repository directly on your wiki.
- Generates static files from which page views are served. To do this it comes with a svnwiki-post-commit-hook program that should be configured as a post-commit hook in the wiki's Subversion repository (details on how to do that are provided in the installation guide). We call this the pre-rendered model.
- Supports tagging of files. Each file may have many associated tags. Files are generated for each tag with links to the files having it (example). Files are also generated for each file listing the tags they have (example). A file is generated with the most popular tags (example). And also, each page has a list of Related pages, which includes those it shares tags with sorted by tag (there's an example at the end of this page).
- Generates ATOM XML feeds with activity, one for each file (example) and one for each directory (example), including the root of your wiki.
- Generates HTML pages with access statistics for the pages in the wiki (example). These statistics are taken periodically from the access logs. The files are properly integrated with the rest of the wiki (e.g. articles have Stats links to the stats pages, the stats pages have Article, History, Discussion, etc. links).
- Generates PDF files for the articles (example). The PDF generation doesn't support everything yet (eg. images) but is quite good for most cases.
- Uses GNU Enscript to perform syntax highlighting over multiple languages / formats (example with Java and Python code). As of this writing, the following are supported: ada asm awk bash c changelog cpp csh delphi diff diffs diffu dylan eiffel elisp erlang forth fortran fortran_pp haskell html icon idl inf java javascript ksh lua m4 mail makefile matlab nroff oberon2 objc outline oz pascal perl postscript pyrex python rfc scheme sh skill Smalltalk sml sql states synopsys tcl tcsh tex vba verilog vhdl vrml wmlscript zsh.
- Supports an extensible syntax for types of links, which in other wiki systems have been called «interwiki links». Basically, you define a set of rules specifying transformations and then you can easily create links. For instance, [[google:svnwiki]] is rendered as a link to a Google search: svnwiki.
- Supports searching the wiki using Hyper Estraier. Svnwiki will itself call Hyper Estraier directly to index documents in the wiki as well as to perform searches.
- Uses svn properties providing great flexibility in the way the wiki site is managed. You can do the following things on a file by file basis (or you can set properties on directories to affect all their contents recursively):
- Allow users to send a diff (patch) with their changes to specific email addresses.
- Prevent users from modifying certain files directly (through Svnwiki). Such files can only modified by other means (such as using the Subversion svn client).
- Prevent certain files from being converted from wiki-format to HTML. These files will be sent directly as they are. This allows you to include binary files (eg. images, sound, xml) in your repository. The standard svn:mime-type property will be uses for these files. You can even edit these files through Svnwiki (for example, you may include your CSS files in your repository and edit them through Svnwiki).
- A different CSS file can be set for each file in the wiki.
- Supports browsing the directory tree of the repository, providing some information on every file.
- Supports content in any charset. You configure the charset you want to use for the information in your wiki through the svnwiki:charset Subversion property.
Documentation
The following documents might help you understand and use svnwiki:
- tips
- A list of tips about how to use or administer Svnwiki.
- changes
- A log of changes made to the development version of Svnwiki or the Chicken eggs it depends on.
- install
- Explains the procedure to build and install svnwiki, as well as to configure a wiki.
- bugs
- Reports known problems in svnwiki. Also lists ideas suggested by svnwiki users on how to improve it.
- properties
- List of Subversion properties that svnwiki recognizes. If you administer a wiki, it would be a good idea to familiarize yourself with them to get an idea of the kind of things you could do with them.
- extensions
- Documents the official extensions for Svnwiki.
Sample installations
The following is a list of websites powered by Svnwiki:
- Bogowiki, probably the most significant. As of this writing, it has been available for 2 years and received over 7000 commits.
- This one, of course. This is the oldest Svnwiki wiki. We use it for different things such as share books and comment on them or blogging.
- Chicken wiki, where the Chicken community documents Chicken and its extensions.
- FSF Latin America
- emQbit's homepage.
Alternatives
The following is a list of other Subversion wiki systems.
- subwiki
- Written in Python using its bindings to Subversion's svn_client. It's development seems to be rather stale. TODO: Include more information on how it compares with Svnwiki.
- ikiwiki
- Project started in May/2006 by Joey Hess to provide a wiki-compiler. Uses the Markdown syntax. Written in Perl.
Authors
Svnwiki is made possible by the volunteer work of the following persons:
- Alejandro Forero Cuervo is the lead programmer/maintainer.
- Juan Manuel Caicedo has made some useful improvements to the default templates.
- Juan Felipe Alvarez Saldarriaga made the default wiki style and implemented the useful JavaScript toolbar for editing text.
- Andres Forero Cuervo, Sergio Garcia, Mario Domenech Goulart, Alexandre Oliva and Nelson Castillo have made many useful suggestions.
Requirements
Svnwiki requires the following software:
- Chicken 2.3 or greater. Older versions don't offer all the procedures that Svnwiki requires.
- Chicken extensions (eggs) listed in the install guide.
- Subversion. Svnwiki calls Subversion's libsvn_client and requires a Subversion repository to store its files.
- A web server supporting CGI such as Apache.
- SQLite
The following optional software, if present, will allow svnwiki to provide extended functionality:
- GNU enscript: Required if you want to use syntax coloring (with the enscript.scm extension).
- LaTeX: Required if you want to generate files in PDF format for the contents of your wiki.
- Texvc: Required if you want to typeset math contents (with the math.scm extension).
Wiki Format
Svnwiki uses a format for the wiki pages that is very compatible with many other wiki formats, except for advanced markup.
You can see a description of this format in the wiki-syntax page.
Please send us your suggestions about improving the syntax.
External Links
Last update: 2008-02-21 (Rev 13709)