This post originated from an RSS feed registered with Java Buzz
by Marc Logemann.
Original Post: Subversion's tagging mechanism
Feed Title: Marc's Java Blog
Feed URL: http://www.logemann.org/day/index_java.xml
Feed Description: Java related topics for all major areas. So you will see J2ME, J2SE and J2EE issues here.
Right now there is a highly interessting debate regarding Subversions handling of tags and revisions on the subversion user maillist. I recently joined this discussion with my 2 cents. Basically its all about how subversion handles a revision. In fact right now, a revision is the same as a branch, you do a cheap-copy of the Trunk and place that copy somewhere in the repository tree, you have to name that tree apropriately, otherwise you dont know afterwards what revision that is.
Meanwhile in the trunk, you cant see too easily at which version you created a revision. Clearly, you can check out your created revision and have the sources as they were at that time, but thats a different view on it.
Sean Johnsoten said:
"I guess I just cannot understand how anybody can accept that a source
control system can be complete without being able to reference a frozen
version of the code without having to resort to either magic numbers (the
global revision numbers) or examining log outputs."
Scott Palmer went on:
"If I look at the history of the trunk - do I see the points at which the 'tags' or 'labels' were made? If not then I am missing exactly what I attempted to achieve - a label on the line of development at a certain point in time. Sure, I made a copy at the point in question, so I can rebuild the project as it was at that point, but now I have more work to find out exactly which copy that is and where that copy fits in relation to the trunk. A read-only copy is not the same thing as an attribute on the trunk. The copy itself, while not wasting storage space, wastes perceptual space. As I browse the repository tree those 'tag' copies show up as huge branches tacked on to the tree, with no obvious relation to what they really mean except whatever clever naming scheme I come up with. That's a hack, not a 'tag' or 'label'. I could just as easily make a full non-cheap copy at every point I want a tag or label. Given that disk space is not the issue, what is the version control giving me here? Remember, I'm not asking for a branch and don't want or need one. Maybe that is more to the point. I don't want a branch, I don't care how much it costs, a branch is simply not what I asked for. "
--
All in all, i am with their concerns, i dont think that the tagging mechanism as it works now is the best way to solve it. It seems that they implemented branching and got tagging for free, but these two concepts are not really the same kind of thing.
I dont know if its only because we used CVS labels so much, in fact other versioning systems also have a seperate revision concepts compared to branching. Lets see if there will be room for improvement there. But dont get me wrong, i like subversion and because i like it, i try to give some input.