Write current svn version into text file

ruby-on-rails, svn

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 
4168

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

Problem

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

Original source

Related problems