Current Subversion revision command
Newer versions of svn support the --show-item
argument:
svn info --show-item revision
For the revision number of your local working copy, use:
svn info --show-item last-changed-revision
You can use os.system()
to execute a command line like this:
svn info | grep "Revision" | awk '{print $2}'
I do that in my nightly build scripts.
Also on some platforms there is a svnversion
command, but I think I had a reason not to use it. Ahh, right. You can't get the revision number from a remote repository to compare it to the local one using svnversion.
There is also a more convenient (for some) svnversion
command.
Output might be a single revision number or something like this (from -h):
4123:4168 mixed revision working copy
4168M modified working copy
4123S switched working copy
4123:4168MS mixed revision, modified, switched working copy
I use this python code snippet to extract revision information:
import re
import subprocess
p = subprocess.Popen(["svnversion"], stdout = subprocess.PIPE,
stderr = subprocess.PIPE)
p.wait()
m = re.match(r'(|\d+M?S?):?(\d+)(M?)S?', p.stdout.read())
rev = int(m.group(2))
if m.group(3) == 'M':
rev += 1
First of all svn status has the revision number, you can read it from there.
Also, each file that you store in SVN can store the revision number in itself -- add the
$Rev$
keyword to your file and run propset:svn propset svn:keywords "Revision" file
Finally, the revision number is also in
.svn/entries
file, fourth line
Now each time you checkout that file, it will have the revision in itself.