CVS will automatically set an $Id$
tag in each file; it looks something like this:
$Id: test.php 110 2009-04-28 05:20:41Z dordal $
This is super-helpful for two reasons:
Subversion, by default, doesn't add these tags. However, you can configure it to set the tag when you checkin a file.
Note that this configuration has to be done client side; unfortunately you can't set this on the svn server for all clients. If you have multiple developers, you'll need to be pretty strict about making sure they all go through this procedure.
First, update your ~/.subversion/config
with the following info:
[miscellany] enable-auto-props = yes [auto-props] *.php = svn:keywords=Id *.js = svn:keywords=Id
NOTE: You may want to add additional file types to the list above. As it stands, it will only set $Id: $ tags for *.php
and *.js
.
That configuration will automatically apply the svn:keywords
property (which sets the $Id$
tag) to all new files. But what about existing files? For these, you'll have to set the property manually. Go to the root of your source tree, and run this command:
find . \( -name "*.php" -o -name "*.js" \) -exec svn propset svn:keywords Id {} \;
find
will return a list of all .php
and .js
files, and then run svn propset
on them to set the appropriate svn:keywords
property. Now, all files have the property set, and will automatically set the $Id$
tag on checkin.
Finally, go through each file and add the prototype $Id$ tag. I like to do this in the comments at the header of each file, e.g.:
/*
* @author David Ordal, david -at- ordal.com
* @version $Id$
*
*/
When you checkin the file, you'll see it expand to:
/*
* @author David Ordal, david -at- ordal.com
* @version $Id: test.php 110 2009-04-28 05:20:41Z dordal $
*
*/
That's it!