[Python-Dev] Expose Subversion revision number to Python (original) (raw)

Phillip J. Eby pje at telecommunity.com
Fri Dec 16 16:51:33 CET 2005


At 08:35 AM 12/16/2005 -0500, Barry Warsaw wrote:

On Fri, 2005-12-16 at 01:38 -0500, Phillip J. Eby wrote:

> FYI, this is not the true revision number; it's only the revision number in > which the directory was last modified, not the latest revision number > within the tree. Yep, I know. At work, we've gone through many iterations of this, including essentially what you do in setuptools. I opted against that for several reasons. First, I wanted to keep the patch as simple as possible. Second, I didn't want to depend on Python already being built (i.e. write a Python script to do this). Third, I think most Python developers will just svn up at the top of the source tree, then rebuild, rather than svn up some buried sub-tree, cd back to the top and rebuild from there. At least, that's how I generally work with the Python tree.

Actually, the issue I was concerned about was that when you make a change to some file and commit it, the build number won't change unless you also svn up, and maybe not even then. I never figured out how to get a good answer without reading the full "svn info -R" or the .svn/entries files.

Note that you can just use:

 svn info -R|grep '^Last Changed Rev'|sort -nr|head -1|cut -f 4 -d" "

To get the highest-numbered revision. However, both this approach and yours will not deal with Subversion messages in non-English locales. I discovered this with setuptools when I was using "svn info" when somebody reported that the text before the numbers is different in non-English locales.

After a bit of experimentation, here's a pipeline that gets the info directly from the entries files, without reliance on the language of svn info's output:

 find . -name entries | grep '\.svn/entries$' | xargs grep -h 

committed-rev
| cut -f2 -d'"' | sort -nr |head -1



More information about the Python-Dev mailing list