RE: RE: Re: Simple Label=RevisionID Discussion
From: Chris Lambrou <Chris.Lambrou_at_grantadesign.com>
Date: 2006-11-24 19:26:11 CET
I reckon people like to check out an entire repository because its easier than tailoring their checkout to a specific set of projects and branch sub-folders - or at least it ought to be. Since disk space is cheap, and file and folder copies are stored efficiently in the repository, then it ought to be quick and easy to check out and update the entire repository, and not have to worry about tailoring exactly which parts of the repository to check out. It's a weakness in Subversion that this is sadly not the case - updating an entire project is far, far slower than it ought to be. I suspect that the reason many people have a checkout strategy as you've described is precisely because the easier alternative is just too painfully slow.
As you suggest, I also work on only a subset of the repository, but the problem still exists. The project I'm currently working on has become fairly large, so I only have the trunk and one branch checked out. For the most part, the small group of developers also working on this trunk tend to keep to their own sub-folders of interest and responsibility, but we frequently overlap, working anywhere within the trunk as required. One of those sub-folders contains a fairly large set of database script files, and it would be nice to be able to label this sub-folder before I embark on any substantial changes to the scripts. I would consider these labels to be my own, private labels, that don't really concern any of the other developers working in the same trunk. At the moment, if I create such a label using a local tag, every other developer working on the trunk gets a copy of this when they next update, which takes quite a long time because the scripts are large. As a direct result of this, I have resorted to
As I see it, there are two problems with tags for this particular purpose.
1. Tags are not truly lightweight. Yes, they hardly take up any space in the repository. Yes, disk space is cheap and plentiful, so it doesn't matter too much that they take up a lot of space in the working copy. The problem is network traffic. It's bad enough having to wait minutes to perform certain updates when I'm working on my company's relatively speedy internal network. When I connect in using the VPN, it can take hours to perform some of these updates. [Surely it's possible to optimise such an update - if the update includes fetching a copied folder or file, and I already have the original on which the copy was based, can the local copy not be constructed locally, based on the originals and relatively compact deltas?]
2. A tag is a copy, not a label. A number of people have drawn the analogy that a tag is like a photocopy or a snapshot of a folder. Well that's fine, but if the folder is large, then so is the snapshot, and if the snapshot takes place inside a trunk (or branch), then everyone working on the trunk is forced to get a copy of the snapshot when they next update. In contrast, a label would be like a little post-it note stuck to the repository. Every developer working in the trunk or branch will be unaware that the post-it is there, unless they explicitly search for it, and none of them has to waste time fetching an unnecessary copy of the snapshot when they next perform an update.
Chris Lambrou <mailto:Chris.Lambrou@grantadesign.com> schrieb am Freitag, 24. November 2006 17:35:
Why the heck do people always insist on checking out a whole repository? Check out the branch you're working on and not a single file more. If you're working on two branches at the same time, check out those two. Remove all working copies you don't need any more or use svn switch to update them to the branch/tag you'd like to test. Don't check out the whole "tags" directory unless you have a very compelling reason. svn is specifically designed to allow checking out arbitrary subsets of a repository...
-- Felix Gilcher Head of IT Development Exozet Berlin GmbH Rotherstraße 20 10245 Berlin eMail: firstname.lastname@example.org URL: www.exozet.com --------------------------------------------------------------------- To unsubscribe, e-mail: email@example.com For additional commands, e-mail: firstname.lastname@example.orgReceived on Fri Nov 24 19:26:08 2006
This is an archived mail posted to the Subversion Users mailing list.