views:

396

answers:

4

Hi,
we are planing to move away from CVS and to SVN.
Everything looks good expect that our developers do a pre/post tags on each submission.
So, in CVS we don't have a problem as TAGS are intuitive and cheap.
However, in SVN, Tag is a copy right?
With that said, I am wondering if there is a way for me to do a before and after tag based on revisions or something that I have access to prior to my submission.

+2  A: 

Tags are a copy, but as revisions are tree based in Subversion, the overhead of a copy is far less than in CVS. Have a look at the Subversion book for details. As Richard's comment says, there is a box on this page that describes cheap copies. There is also this site listing Subversion top tips for CVS users.

Rich Seller
Even better, check the box on "Cheap Copies" on this page of the SVN book: http://svnbook.red-bean.com/en/1.5/svn.branchmerge.using.html
Richard Dunlap
Thanks Richard, not seen that one
Rich Seller
+1  A: 

I'm not sure if I understand the question correctly, but you can tag a specific revision in svn:

$ svn cp -r  <url>/trunk <url>/tags/my_tag

See the chapter on svn copy in Version Control with Subversion for more information. Appendix B. Subversion for CVS Users may also be worth reading.

Mark van Lent
+1  A: 

A tag is a virtual copy. Think of it a bit like a symbolic link in UNIX - it's a very low cost operation.

anon
+1  A: 

Just a small comment about a slight difference between CVS ans SVN tags that can cause some problems in migration (at least it caused misunderstanding in my group).

In CVS a tag is a sort of temporal snapshot of your development; you normally develop in your HEAD and when you reach a sort of stable situation that you want to save for later reference, you just do a tag. If you checkout a tag version from a CVS repository, it cannot be modified or, to say it better, it can be modified on your local copy, but you cannot commit back the changes. In some way CVS automatically protect its tags from accidental changes

The copy in SVN is just, well, a copy of the trunk in another path .. if you checkout your code from a tag path in your repository, you still will be able to change it and commit it back; this is normally something you don't want to do, at least if you consider tags as fixed snapshot of your development that are not supposed to change. This is why it is possible, with a specific hook script, to force a tag directory to be read-only (and in my opinion should be really encouraged).

Hope it can be helpful in discussing differences between SVN and CVS (and please apologize for my english).

Orporick
Thanks Orporick. Your English is Excellent!
VN44CA