A Dummy's way of doing CVS tagging in Subversion
User story: As a developer, I want to tag my code every so often, so that other people can get code that's stable, not bleeding edge. This is the classic CVS usecase: Commit your code, and then tag it as 'Production' or 'Released' or whatever. In CVS, that entails touching every file. In Subversion, that's a constant-time operation you can do wholly on the server. Let's say you want to copy your current /trunk to /tags/release-1.0 tag. Issue this sort of command svn copy http://server.foo.com/Repo/trunk http://server.foo.com/Repo/tags/release-1.0 Great huh? Thing is, that's great for leaving a trail of tags in your wake (Beta 1 -> Beta 'N', Release 1.0 -> 2600). What it's NOT good for is for the 'moving tag' usecase: I want to tag my code and then change that tag to point at a new revision of code. This is useful for when 2 modules are evolving towards a release: \module1 \trunk \common \module2 \trunk \...