Matthias Wächter wrote:
> In CVS, if I tag a file (or a bunch of files) this operation is reversable
> without any notice in the repository at all. Worse, a tag can be moved to
> a different revision which makes such tagging rather useless from the
> reproducibility perspective.
That's a carbon-based error; just because you /can/ remove a tag doesn't
mean you /should/. CVS doesn't prevent you from being stupid (to a
large extent, neither does Subversion, but see below). You have to have
a policy to deal with how you handle exactly this kind of procedure.
Unlike some large commercial CM systems, you are allowed to set your own
procedure, rather than having to do things the way "they" decided was
correct. I view this as a benefit.
> In Subversion, the precise location of a file is constructed of two
> things: its location (path) in the repository and its revision number.
> Tagging just changes the path but cannot guarantee that the contents will
> always be the same and can be referred to in this way unambiguously. This
> only holds if you additionally count for the revision number.
No, a Subversion "tag" is a point in time copy of a portion of the
repository. In fact, a Subversion copy is a pointer to the exact node
that was the source at the point of the copy, and hence will never
change, no matter what happens to the source file over time. If you
treat your tag folder as write once (see below), you are guaranteed that
each tag will point to the exact set of files that it always did.
> "The issue is solved in rev. 105 of
Just be thankful that you can do it that way, too. In CVS, the only way
to refer to a set of files is by date or by tag (since the revision
numbers are file specific). In order to completely define a set of
files in CVS, you'd have to list each file and that file's revision.
Now, for the good news, although Subversion doesn't impose any specific
meaning to the tags/ folder for your project, that doesn't mean _you_
can't. Through the use of the pre-commit hook, you can make the /tags
directory for a project be write-once (you can create a new tag, but you
cannot rename a tag, nor change any files within that tag).
I'm actually suprised that there isn't an example to do something this
included with the source. I'm sure someone else has written something,
but if no one speaks up, I'll do it myself, and it'll be in Perl, just
to annoy the Python zealots... ;-)
Director of Information Research and Technology
Rowman & Littlefield Publishing Group
4501 Forbes Boulevard
Lanham, MD 20706
To unsubscribe, e-mail: firstname.lastname@example.org
For additional commands, e-mail: email@example.com
Received on Fri Mar 4 18:51:06 2005