R – Write current svn version into text file


I have a rails site. I'd like, on mongrel restart, to write the current svn version into public/version.txt, so that i can then put this into a comment in the page header.

The problem is getting the current local version of svn – i'm a little confused.

If, for example, i do svn update on a file which hasn't been updated in a while i get "At revision 4571.". However, if i do svn info, i get

Path: .
URL: http://my.url/trunk
Repository Root: http://my.url/lesson_planner
Repository UUID: #########
Revision: 4570
Node Kind: directory
Schedule: normal
Last Changed Author: max
Last Changed Rev: 4570
Last Changed Date: 2009-11-30 17:14:52 +0000 (Mon, 30 Nov 2009)

Note this says revision 4570, 1 lower than the previous command.

Can anyone set me straight and show me how to simply get the current version number?

thanks, max

Best Solution

Subversion comes with a command for doing exactly this: SVNVERSION.EXE.

usage: svnversion [OPTIONS] [WC_PATH [TRAIL_URL]]

Produce a compact 'version number' for the working copy path WC_PATH. TRAIL_URL is the trailing portion of the URL used to determine if WC_PATH itself is switched (detection of switches within WC_PATH does not rely on TRAIL_URL). The version number is written to standard output. For example:

$ svnversion . /repos/svn/trunk 

The version number will be a single number if the working copy is single revision, unmodified, not switched and with an URL that matches the TRAIL_URL argument. If the working copy is unusual the version number will be more complex:

4123:4168 mixed revision working copy
4168M modified working copy
4123S switched working copy
4123:4168MS mixed revision, modified, switched working copy

If invoked on a directory that is not a working copy, an exported directory say, the program will output 'exported'.

If invoked without arguments WC_PATH will be the current directory.

Valid options: -n [--no-newline] : do not output the trailing newline -c [--committed] : last changed rather than current revisions -h [--help] : display this help --version : show version information

Related Question