CvWiki was an early WikiWikiClone. Once the only WikiWikiClone with functioning TransClusion, BackLinks and WayBackMode, but there are lots of better ones these days. Try ZwiKi ...
CvWiki is a WikiWikiClone of Ward's code that
- uses flat files for text,
- supports direct transclusion of external web pages
- stores backlinks with their pages rather than searching for them (so backlinks pop up immediately)
- and is fully integrated with CVS so you've got
- unlimited undo,
- no edit collisions, and, best of all
There are several smaller twiddles in it too, like debugged LinkPattern
s and EmphasisPattern
s. But it's all backward-compatible with the existing wikibase.
A large amount of this clone is still under Ward's copyright, but unless Ward has objections you should be able to pick up a copy of Pete's hack at http://home.connectnet.com/peter/CVWiki.gz (BrokenLink) (alternate link: http://home.san.rr.com/merel/CVWiki.gz (Also BrokenLink))
Pete's parts of this are all under LGPL.
Be warned that installing the thing properly will require you to install CVS (see http://www.cvshome.org) which is free but requires a little expertise. And CvWiki comes with zero documentation at the moment.
I want to try out CVWiki. I have Perl and CVS installed, but get tons of errors when I try the naive thing (running cvwiki from a command line to see what happens). I am assuming that if I grovel through code long enough, I might get it to work. Still, if someone has a reasonable list of the things that need editing to get this to work, that would be helpful.
Okay, being the cause of some angst, here's the basics; others ought to fill in the difficulties they've had with each step:
I'm trying to set up a departmental CvWiki. I don't know much about CVS and I don't know how to accomplish the above step. Could someone provide example CVS commands?
- Get CVS 1.9.28 or higher.
- Get Perl 5.004 or higher.
- Get an httpd and configure it to know where the cvwiki CGI script lives. Two that I know work over NT 4.0 are the Xitami (from http://www.nonags.com) and Netscape Suitespot servers; I have it working over apache on NT now too. Since Pieter Hintjens has been such a good sport about supporting the Xitami community for so many years (see http://www.imatix.com/html/xiusers.htm ) I think it's only fair that we pull Xitami from iMatix at http://www.imatix.com/products.htm
- set the appropriate values for the variables at the start of the CvWiki script. In particular, set the directory CvWiki will use as its CVS workarea (this variable is DataBase; set it to the full path for the CVS module you check out in the next step)
- Create that directory in the CVS repository. The manual explainshow - you need to end up with a directory that you actually checked out of CVS, not just one you used for <import> or <add>.
- light blue touch paper and stand well back.
I get good use from this tool, but it's not free of Ward's copyright, I make no money from it, and as you can read in its source I neither support nor warranty it for any use at all. Use strictly at your own risk. -- PeterMerel
I wrote a Wiki Clone based on CvWiki running at http://www2.tunes.org/cgi-bin/TunesWiki (New address: http://cliki.tunes.org/)
I'd be glad to help someone who wants to set up CvWiki. It was hard enough for me, I don't want anyone else to have to go through that. CVS 1.9 is buggy; CvWiki requires 1.9.26 or later.
Before you can use WayBackMode, you have to:
- Create the directory for the CVWiki database.
- Put this empty directory in the repository. Make sure the directory in the repository is the same name as the directory for the database, and only one level deep (not 2, with the parent directory name duplicating the subdirectory name).
- Remove the directory you made. The canonical version remains in the repository.
- Check out the same directory, making sure it checks out in the same location it was at before. The only difference is that there will be a CVS/ subdirectory with some files in it.
- Test adding a page to the wiki database. Keep a close eye on the web server logs for CVS errors. The CGI wiki script must run as a user that has write permission to: the repository (using CVS), and also the checked out version of the wiki database.
Is there a CvWiki running anywhere that one could check out? The Tunes one appears not to connect to anything. -- RonJeffries
It's there, it just seems to be down the end of a long narrow pipe. I stuck a transclusion example on its front page for you to play with. -- PeterMerel
I'm running (internal to our firewall, alas) a modified version of CvWiki.
Some of the interesting changes include:
- uses RCS rather than CVS (because it was convenient)
- the revision history display adds a hyperlink to show diffs at each revision
- adds an Append Text link alongside EditText (accepts new text, which is appended to prior content)
- adds RecentChanges at the top rather than the bottom
As well as more minor tweaks and fixes. The basic notion of the revision
controlled wiki is a great addition; I also find the diffs addition
addictive (OK, RecentChanges
says it's changed but where
personally use that more than WayBackMode per se
. I just added the
Append feature recently, really motivated by a desire to have a mail-to-wiki
gateway (a little forwarder script extracts a WikiName
from a mail Subject,
and invokes a wiki append to that page via http), but it seems to have
potential for ThreadMode
discussions, notably avoiding stepped-on edits, and
in contexts where some users are not secure enough in wiki lore to edit
someone else's comments.
I'd be glad to mail it to interested parties. -- JimPerry
I think I like the sound of most of that except the thready stuff, which it seems to me might detract from the WikiNature. RCS vs. CVS makes no difference unless you're versioning your wiki along with your project, in which case CVS is handy. I like the diff idea - should like to see it in action before I could opine on whether I like it better or worse than WayBackMode. I guess I can think of good uses of both. -- PeterMerel
For better or worse we're not seeing much wiki-ish interactivity, but it is
proving useful as a repository, hence the mail-gateway/append experiment.
YMMV.The diff thing is orthogonal to WayBackMode; the word "modified" on
each revision listed is linked to the diffs at that rev (from the previous),
the date is still linked to the WayBackMode of that page at that rev.
Concurrency problem. CvWiki runs on Solaris as nobody. The user edits and clicks on Save. CvWiki creates a lock directory /tmp/wiki. The user decides to go back, edit for a second, and clicks on Save again. CvWiki runs a second time but finds that /tmp/wiki still exists. Since the first run never removed the lock directory CvWiki can't create a new one and aborts.
How can this concurrency conflict be resolved? (It's a pain to remove the /tmp/wiki directory "by hand" because I don't own it, i.e. I have to do it from inside the script). -- FrankGerhardt
The behaviour of CGI scripts depends on the http server you use. Some servers will kill a script before it finishes, leaving lock files hanging around indefinitely. I've run CvWiki successfully with both the Xitami and Netscape SuiteSpot? servers over NT. I haven't tried it on Solaris, but I'd suggest SuiteSpot? and Apache are worth trying if your present server is killing scripts before locks can be removed.
Alternatively you could play with Perl SIGHANDLERs in the script to cause the locks to be removed on a kill - if you do this and it works then I'd be happy to integrate your changes back into my otherwise unsupported version of the code ... -- PeterMerel
If you are using a linux system change the 1st line to #!/usr/bin/perl or wherever perl is located.
I found this made digging out problems a little easier:
create a script (I called mine wrap.pl).
system 'perl /pathname/CVWiki.pl',@args;
For some reason from perl the errors do not get logged but from a script they do.
You can also call the script from the command line to get it up and running.
Now someone who is better at HTTP and perl might post a series of commands
that would emulate a call from a browser to test various Wiki calls.
Also if I remove the "perl" in the wrap.pl, and just tries to execute
the script it fails. Don't know why. Wiki.pl runs right next to it OK.
If someone has an idea of how to add access control lists.
I would like to have a specialised wiki for work ( for process documents etc. ),
and want to restrict it to workers while keeping it on the WorldsWildWeb?
People should be able to make tools that can help you manage the repository.
For example to delete a page. (I wonder what happens when you do cvs delete and
someone tries to recreate the page?)
Also can you create the page WorkingTheWayBack??
Finally: If you are using CVS and don't want to risk corrupting your
repository, or intermingle wiki with other stuff here are the steps to use
another repository ( and not have to screw aroung with CVSROOT ).
- Define a variable in the script called $Repository, set it to the directory you want to store things in. $Repository='therepositry';
- Login as the user ( or su user ) that httpd runs the script under. With Apache that generally defaults to 'nobody'.
- Create the repository directory.
- Cd to that directory. Run the command: cvs -d $Repository init
- Create the $DatabaseName directory.
- cd to $DatabaseName
- cvs -d $Repository import $DatabaseName'as a local directory' vendor version. Make something up for vendor. The first character of version must be alphabetic.
- cd ..
- cvs -d $Repository co $DatabaseName'as a local directory'.
- Look in $DatabaseName to see if the folder CVSROOT is there. If not you've made errors.
- The nastiest part:edit the CVWiki.pl script ($Repository should already be there) put '$cvs="cvs -d $Repository"' at the top. Every time you see a string 'cvs somecommand' change it to '$cvs somecommand'. For example change cvs import to $cvs -d $Repository import.
- Sit back enjoy.
PS Where are the UnitTest
s for wiki.pl and CVWiki.pl?
PPS Sorry for the messiness of my contribution. I will clean it up tonight.
What's the difference between this page and http://c2.com/cgi/wikibase?CvWiki?