David Kramer david at
Fri Aug 18 08:20:23 EDT 2006

Kent Borg wrote:
> So what is the difference between a tag and a branch and a copy?
> Nothing, not as far as Subversion is concerned, it is all a matter of
> how you use the two different copies.  Want to start making changes to
> your tag?  Fine.  Subversion will let you, and you now have turned
> your tag into a branch.  And if a coworker doesn't notice and quickly
> grabs the thing named "releases/version2.1.3" s/he will get the most
> recent version of "version2.1.3" not the original "version2.1.3".
> Out of the box, Subversion thinks they are all the same: tag, branch,
> or copy.  Very scary.

You know, I hear this all the time, but nobody has every been able to
tell me what's so "scary" about it.  What do you think the difference
should be between a tag, a branch, and a copy?

To me, having them all be copies, used however you want, is a big
feature.  For instance, I have three web-based applications in
Subversion.  Instead of having a "trunk", "branches", and "releases"
directories like I would for a normal application, I have a "devel"
directory and a "live" directory.  There's a working copy of each for
Apache DocumentRoots, accessible from different URLs.  When we want to
publish changes from devel, we do an "svn merge", then svn update
Apache's working copies, and we're done!  That's incredibly useful, and
undoable in many other version control products.

As for freezing your tag and release copies, there are easy ways of
making them read-only, or even read-only by all but a select group of
people.  I implemented that at one company, and it worked well.  Today
it's even easier, because you can just have someone lock the tree and
leave it locked.

More information about the Discuss mailing list