Well, I've been giving this project thought for the last week or so, and
finally got off my ass and did it today (got motivated after seeing the
thread on ViewSVN). It was kind of fun, had to be extra creative. Things
like "check out a specific revision of a file" turned into monumental
challenges. To get directory listings I actually pipe commands into
"svnadmin shell" and parse the output...
I have a working repository online at http://mail.saurik.net/chora/ as a
demo. Note that that is _.net_, not .com (http://mail.saurik.com/chora/ is
just going to give you an error message... actually... *sets up a
redirector*... ok, now it will just ferry you off to the real one). The
"Chora" repository (which you will likely get thrown into first) is CVS. If
you change your location to "Menes" you will be browsing a Subversion
repository. That repository is backed by http://svn.saurik.com/repos/menes/
if you wanted to look at that for any reason. It's quite slow sometimes...
you might have to wait up to 20 seconds for some of the larger directories
in the repositories to parse fully.
I ported the CVSLib that it uses to SVNLib, and then set it up to have them
work side-by-side so the original CVS functionality is still there (a few
more if statements than I want, but I still need to do some cleanup work).
You can get the code for it through CVS from:
the password is empty, and the module is "chora"
Using CVS because SVN doesn't automate vendor branches :).
I modified the distribution configuration files to show how to configure
it... I _might_ have forgotten something. If so, yell at me. Note that
Chora needs to be installed with Horde, so if you really want to play with
this you might want to try getting the real Chora setup first so you can see
how it is done before trying to futz with my patched copy.
You _do_ need URL access to the repository for this to work (which you setup
in the configuration file in addition to the local path), as the only way I
could figure out how to check a file out at a given revision was to use the
secret URLs that no one is ever supposed to use. Hence, you also need wget
I have diff, checkout, directory listing, and log output working. Don't
even try clicking on the branch and annotation support, it doesn't work yet
(and I'm not even sure if there is a generic way to do branch support using
such a simple interface for Subversion).
The three functionality limitations I know of so far are:
1) Chora presents a quick link for "Diffs to version XX" where XX is the
previous revision. I need to rework things a tad so instead of CVSLib_Rev
just substracting to get the previous revision it is forced to go back to
the CVSLib_File object and get the previous log entry. You can still ask
for diffs, you just can't use that one quick link it gives you.
2) You can't ask for different diff formats. They all come out as context
diffs (or unified diffs or whatever they are). I would have to download the
files into temporary directories and do the diff manually for other formats
as svn won't give them, and I'm not doing that yet :). The graphical diff
editor _works_, it just doesn't let you look at it in different ways.
3) I don't yet have it telling you how many lines were added/removed between
revisions. Probably would make things extra slow (as if it isn't slow
enough all ready).
Jay Freeman (saurik)
To unsubscribe, e-mail: firstname.lastname@example.org
For additional commands, e-mail: email@example.com
Received on Sat Jun 29 03:22:37 2002