RE: FW: [DESIGN] Aliases?
"Gale, David" <[email protected]> Mon, 27 Feb 2006 10:52:23 -0500
| Newsgroups | gmane.comp.version-control.subversion.devel,gmane.mail.eyebrowse.user |
|---|---|
| Message-ID | <68B5F4BC6852D244BDDAAE69E31B15F90806535D__31518.6821193949$1141062903$gmane$org@intrepid.hypertherm.com> |
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. =20 >>=20 >> 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. =20 >>=20 >> 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. =20 >=20 > 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. (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? 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 me. The goal was to reduce confusion, rather than increase opportunities for it. > So I think it is very natural to use the versioned filesystem > both for branches and tags. I don't. Tags refer to a specific moment in time, rather than files on the drive. Moments in time don't change, at least not with our current understanding of time. > My impression is that at the end you want to go backwards in time > to the more limited CVS model, because you are used to it, > but giving up the above advantages? No. I want to give the users the _option_ to use the tool in a way that makes sense, using paths to track path information, and labels to track time. I love SVN's branch mechanism; it just doesn't make sense to use it for tags--it's using a bazooka as a fly swatter. Too much power, and not designed for the task at hand. > Furthermore, even if some things would be inherently different, > then this does not mean that they must not share the same underlaying > mechanism. For example, text files and bitmap files are inherently > different,=20 > but both are stored in files. Yes, they share the commonality of being files. Branches and tags don't share that sort of relationship. Branches are mutable, on-going alternate development paths; tags are (supposed to be) at least a section of the repository at a specific point in time--which is to say, a specific revision. You can kludge this by copying that section off somewhere and putting a "do not touch" sign on it, but there's no built-in guarantee that that will happen; on the other hand, recording the revision number is guaranteed to fulfil this through anything short of a dump-filter-load process (and could even be designed to survive that). > Of course, you can discuss about the user-interface, > for example that when using the SVN command line clients > that you have to type more than in CVS. > but this is a different issue than the architecture. I agree that's a different issue, and has never been part of my argument. Why bother bringing it up? -David