Gale, David wrote:
> Folker Schamel wrote:
>>> I have to say, my complaint is that people advocating the
>>> "trunk/tags/branches" structure are advocating using paths to store
>>> revision information, which is nonsensical to me.
>>> Having current development code in trunk makes sense--it's a
>>> specific location in the directory structure, proceding forwards
>>> through time. Similarly, branches are copies of specific locations,
>>> which exist for some (unspecified) period of time. Tags, by
>>> definition, however, are supposed to be "snapshots" of at least a
>>> portion of the repository at a specific moment in time, and are not
>>> supposed to be mutable. Tags are inherently different from
>>> branches, and ought to be treated as such.
>>> Trunk and branches are paths for development, and it makes sense for
>>> them to be treated as such. Tags, however, are not--and so they
>>> should not be. Seems simple enough to me.
>> The only difference between a branch and a tag I can see is
>> that the content of a tag is usually immutable.
>> Otherwise they share several things.
>> For example, both branches of tags are mutable:
>> They are created, re-defined and destroyed.
> Ok, I'm confused. Tags are immutable, but they're mutable? To my mind,
> a tag is not mutable--once created, it should not (at least 98% of the
> time) be updated, and there shouldn't be any reason to remove it.
The *content* of a tag usually is immutable.
But a tag (alias label) may change.
For example, a tag "latest_stable_version".
Or when using SVN for websites,
then using a tag for the version which is currently online.
Also in CVS labels are used often for such purposes.
And you want to version control such information,
which is not possible in CVS.
In this respect the SVN model has significant advantages
to the CVS model I think.
> (You'll note that my original proposal required an explicit '--force'
> option to alter a tag, specifically to enforce the idea that it should
> not be mutable).
>> And in both cases you might want to version control such operations.
>> Furthermore, you want to have hierarchical namespaces
>> both for branches and tags.
> Why would you want hierarchical namespaces for tags?
Well, why do you use subdirectories on your harddisk? ;-)
> There's no
> hierarchical namespace for revision numbers. And, frankly, the thought
> of 'svn co -r proj1/releases/1/2/8 svn://example.com/repos/proj1' scares
The correct command is just 'svn co proj1/releases/1/2/8'.
Yes, SVN uses a different approach than CVS,
and this may scare people being used to the CVS philosophy.
But as often, after being used to a new philosophy,
then you can see the advantages. :-)
To unsubscribe, e-mail: firstname.lastname@example.org
For additional commands, e-mail: email@example.com
Received on Mon Feb 27 19:32:29 2006