Re: Subversion tagging
From: Ed Hillmann <edhillmann_at_yahoo.com>
Date: 2007-01-23 00:10:26 CET
> Yes, internally there is no "per file revision". Functionally however,
You know that /tags/TAG_A/dirOne/FileA.blah is a copy of /trunk/dirOne/FileA.blah, and I guess the repository knows that one was copied from the other. But it is a logical leap to assume that you know have a per-file revision. Once the TAG_A file is copied, you have two different files. Unless something changes (subversion internally tracks the two files are related by way of a copy and this link is maintained until either file is deleted from the repository), they're two different files to the repository and no matter how much you want it to know what you know, it won't. So, while you know there's a per-file revision functionality, it really doesn't exist in the repository.
> This is all well and good until someone wants to report based on such
Kind of a different argument from the one originally starting this. It is a pain to look at all differences between all versions of a file, because of the lack of internal linking between the files. However, I'd be more inclined to think that keeping the internal links between copied files within the repository is more likely provide a better report than attempting to provide CVS-like tagging in Subversion.
And as far as branching not being relevant in the "Internet Age" as compared to shrink-wrapped software, sounds more like a rant against how your production environments are set up, versus ivory tower process. We quite easily use branches to control what goes out, and we quite happily have multiple releases. But, we don't expose our source control repository to anyone consuming our software (we have a controlled release process which generate binaries which are downloaded on request).
However, even if we were exposing a Subversion repository to the consumers (instructing them to update from it to use new releases), it would make a alot of sense to me to never tell them to use files from the trunk, but a branch directory. Changes that go into the trunk would never go out to a production site, only those that are committed or copied to the branch. Consumers would only need to know when to update from the branch. As such, a fix only requiring a change to a single file would then only require that single file to be copied or merged to the branch, ensuring that changes to other files which aren't ready for production stays where it should.
For me, I'll happily continue using branches to control when software goes out to production sites, even in this day and age. I'll always argue that using the trunk to cut/provide releases is always more dangerous and/or tedious than using branches (Either in Subversion or CVS).
Send instant messages to your online friends http://au.messenger.yahoo.com
This is an archived mail posted to the Subversion Users mailing list.