subversion-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Weintraub <>
Subject Re: Setting "tags" to read only ?
Date Mon, 04 Oct 2010 13:06:57 GMT
On Wed, Sep 29, 2010 at 10:20 AM, Phil Pinkerton <> wrote:
> Is it possible to set these tags to read-only once ther are copied from the
> trunk to the tags directory ?

One of the first things I did when I used Subversion was to tackle
this very issue. Most version control systems allow users to create
tags and lock them to prevent their accidental changing. Since
Subversion doesn't have real tags, it was missing what I considered a
vital feature.

I wrote what I called a "kitchen sink" hook. It does (to me) several
vital tasks. 1). It allows you to define groups, so you can set
permission by group instead of individual. 2). It allows you to set
files as "read-write", "read-only", and "add-only". That last
permission was specifically for tags. If a directory like "tags" is
set to "add-only", users can create tags by an "svn copy", but they're
not allowed to modify a tag once created.

My hook also has a few other functions too: 3). It allows you to force
files to have certain attributes and you can optionally specify the
values of these attributes. For example, you might want all files that
end in "*.ksh" or "*.sh" to have the attribute "svn:eol-style" set to
"LF". 4). The script can ban certain file names. For example, I don't
like it when *.java files have spaces in them. I can set the hook up
to prohibit new "*.java" files from having spaces in the name. And,
finally, it can also verify revision properties. Pre-1.5, it can only
verify svn:log (which is the commit message). Recent versions of
Subversion can verify other revision attributes on commit too.

My script is written in Object Oriented Perl. (There's an older
version that's much more of a hack, but I rewrote the hook from
scratch from scratch to make it more readable and more robust.) It
doesn't require anything but the standard Perl modules (the older one
required the installation of an optional module which is difficult to
do at some sites). You can download it from here: A sample control file is here:

There is a new standard pre-commit access control hook written in
Python that is available directly from Subversion. I believe it also
allows you to specify that your tags directory is "add-only". You may
want to look at that.

David Weintraub

View raw message