"[Google Summer of Code] Subversion servlet for WEBrick" on Wed, 21 Mar 2007 00:32:22 +0900 (JST),
Kobayashi Noritada <firstname.lastname@example.org> wrote:
> Currently, Subversion has only one HTTP server option: Apache +
> mod_dav_svn. So, I'd like to add the second option: Subversion
> servlet for WEBrick. WEBrick is an HTTP server toolkit written in
> Ruby and is included in the standard distribution of Ruby. Although
> it is not appropriate for creating HTTP servers with global access, it
> is useful for creating servers that can be set up easily and for
> creating servers for testing and internal use. In particular, with a
> popular web application framework Ruby on Rails, WEBrick is now widely
> used. My idea is to add a Subversion servlet for WEBrick, which can
> ease using Subversion from programs (in particular, web applications)
> written in Ruby.
This sounds good for me.
I want portable Subversion server because the following
* We need to run Subversion server to test remote server
access and authentication of the Ruby bindings. Now, the
Ruby bindings use svnserve but there are some problems
* Windows doesn't have fork.
* svnserve.exe supports Windows service but it's too
difficult to run without installation.
* Collect all DLLs required by svnserve.exe. (We
can't modify PATH environment for the Windows
service because a user that executes test suite may
not have Administrator authority.)
* svnserve Windows service runs on different user
authority instead of a user test executes test
suite. The current workaround is that we grant
Everyone full access to copied svnserve.exe and
related DLLs and a test repository.
* We can run svnserve.exe by popen instead of
fork. But we can't kill the process because I don't
know how to send a signal to stop svnserve.exe. I
want svnserve.exe to have a mode that svnserve.exe
stops when standard input gets EOF.
If we get a Subversion servlet for WEBrick that supports
REPOSITORY_PATH/conf/svnserve.conf, we can use the
servlet instead of svnserve.exe and resolve this problem.
* We can access a personal repository from remote host via
HTTP. (Most of the people can't run Apache + mod_dav_svn
personally.) Yes, we can do this with svnserve but it
uses svn scheme and it will be blocked by firewall. If
we use svn+ssh to over firewall, we need to setup ssh on
a host that has a personal repository.
This resolves firewall problem but we can't use a Web
browser to browse repository. We can resolve this
problem by installing Subversion repository browser like
Both firewall and browsing problems can be resolved by
some softwares that already exist but it's not easy to
setup. If we have a servlet for WEBrick, we only depends
on only Ruby and the Ruby bindings.
And WEBrick's CGI API is same as WEBrick's servlet
API. So, we'll be able to run a Subversion servlet as
CGI. We may be able to publish a personal Subversion
repository on a rental server.
The last paragraph says that I want to recommend WEBrick
instead of Mongrel for target Web server.
* There are some Trac like Web applications for Ruby:
Retrospectiva, Collaboa and so on. And they use
Ruby on Rails. If we get a Rails plug-in to provide
Subversion server feature to Rails application, we may
be able to use them as repository browser and repository
server. (We doesn't need to setup Apache +
mod_dav_svn. We just only setup them to provide users
repository server and repository browser.)
The Rails plug-in should be implemented without
depending on WEBrick. So, it's better that this task is
This application, implementing a Subversion servlet for
WEBrick, may be a challenging task as Malcolm says. But I
want SoC project to host a challenging task.
At least I want a Subversion servlet for WEBrick.
To unsubscribe, e-mail: email@example.com
For additional commands, e-mail: firstname.lastname@example.org
Received on Wed Mar 21 02:07:55 2007