You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Omri Schwarz <om...@space.mit.edu> on 2007/02/01 22:30:58 UTC

Adding bells and whistles to mod_dav_svn

Hi, all.

I'm looking at using Subversion as the backend for a content
management system, for a variety of reasons. The phrase "content
management system" generally means bells and whistles that do not
directly pertain to the Subversion code base, and which I am implementing
through CGI (by adding them to Insurrection, mostly), but there are
two exceptions:

1. Autoversioning of files uploaded through HTTP POST

Until all common browsers support WebDAV and/or XForms,
we are left with HTML Forms, which do not support the PUT
method of the HTTP/WebDAV protocols. I've already written
a CGI script in Python that combines with Insurrection to
get around the problem, but I thought I'd ask whether it would
be worthwhile to edit mod_dav_svn to accept files for autoversioning
through the POST method. Among other things, that would allow
such things as accepting log messages along with the upload,
or accepting deltas of some kind or other.

2. The GET method when applied to directories in a repository.

The SVNIndexXSLT option is nice, but it would be better if
a directory index requested by a GET would yield more information
from the properties of a directory's entries, XML formatted,
so the XSLT transform could present it in the form CMS users like
to see (things like icons selected by MIME type and the like).
It doesn't look like a difficult thing to add to repos.c in
the mod_dav_svn directory, but before I set out to do something
like that, I thought I would ask if I could do so without
breaking something in the Subversion clients. Am I right to
think that the svn client could just deal if the DTD and output
for the GET was changed?

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

Re: Adding bells and whistles to mod_dav_svn

Posted by Greg Stein <gs...@gmail.com>.
Hi there,

There is no specification for accepting content through a POST, so
that is not part of mod_dav's implementation. mod_dav_svn is designed
to interface the svn repository with Apache and the WebDAV
specification. No more than that. The design criteria was to be as
minimal as possible, and leave additional features to complementary
systems. This is why the GET response is so minimal: software like
ViewVC can provide the full range of browsing behavior. The XSLT stuff
violates that "no extension" design, and I've never liked it, even
when it was first introduced. At the time, it was about a dozen extra
lines of code, so it was hard to justify my opposition to it, given
the functionality it provided. Since then, it has grown, and I feel my
original fears somewhat justified.

I believe that mod_dav_svn should be limited to the support necessary
for WebDAV clients (and the svn ra_dav client is one of them). Other
clients and functionality should use complementary systems, whether
those are CGI scripts or other Apache modules. Adding "just one more
feature" leads to adding ten more, and then you end up with something
that becomes hard to maintain/evolve into the future. And because
other options for implementing those features *are* available, then I
believe that is a reasonable position.

Cheers,
-g

On 2/1/07, Omri Schwarz <om...@space.mit.edu> wrote:
> Hi, all.
>
> I'm looking at using Subversion as the backend for a content
> management system, for a variety of reasons. The phrase "content
> management system" generally means bells and whistles that do not
> directly pertain to the Subversion code base, and which I am implementing
> through CGI (by adding them to Insurrection, mostly), but there are
> two exceptions:
>
> 1. Autoversioning of files uploaded through HTTP POST
>
> Until all common browsers support WebDAV and/or XForms,
> we are left with HTML Forms, which do not support the PUT
> method of the HTTP/WebDAV protocols. I've already written
> a CGI script in Python that combines with Insurrection to
> get around the problem, but I thought I'd ask whether it would
> be worthwhile to edit mod_dav_svn to accept files for autoversioning
> through the POST method. Among other things, that would allow
> such things as accepting log messages along with the upload,
> or accepting deltas of some kind or other.
>
> 2. The GET method when applied to directories in a repository.
>
> The SVNIndexXSLT option is nice, but it would be better if
> a directory index requested by a GET would yield more information
> from the properties of a directory's entries, XML formatted,
> so the XSLT transform could present it in the form CMS users like
> to see (things like icons selected by MIME type and the like).
> It doesn't look like a difficult thing to add to repos.c in
> the mod_dav_svn directory, but before I set out to do something
> like that, I thought I would ask if I could do so without
> breaking something in the Subversion clients. Am I right to
> think that the svn client could just deal if the DTD and output
> for the GET was changed?
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
> For additional commands, e-mail: dev-help@subversion.tigris.org
>
>


-- 
Greg Stein, http://www.lyra.org/

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org