问题
For example, the SVN 1.5 client has one layout for working copies, and the SVN 1.6 client has a different layout. I understand that the layout automatically gets upgraded when it gets touched by a newer client.
If I have a working copy on my system, how can I find out the version of the layout it's using?
回答1:
If .svn/format
exists, then read the number in it:
- Version 7 is SVN 1.3
- Version 8 is SVN 1.4
- Version 9 is SVN 1.5
If .svn/format
doesn't exist then the version number is on the first line in .svn/entries
:
- Version 10 is SVN 1.6
- Version 12 is SVN 1.7
Subversion 1.6 was the first one not to use .svn/format
. Version 7 and older used XML-based .svn/entries
file, newer versions use less verbose line-based file format.
Since Subversion 1.7 the version number is stored in the .svn/wc.db
SQLite database in the "user_version" field. So even though .svn/format
is bumped to version 12 the actual format version is 29 and future versions may not update .svn/format
anymore. To obtain the version number from .svn/wc.db
there are two methods:
- if you have
sqlite3
in your path,sqlite3 .svn/wc.db "PRAGMA user_version"
- if you DO NOT have
sqlite3
in your path, open.svn/wc.db
in a hex editor and read the DWORD at offset 0x3c
All the format version numbers are described in wc.h along with the version numbers of respective Subversion releases.
回答2:
From Stack Overflow question Find out SVN working copy version (1.7 or 1.8):
One can use sqlite3 .svn/wc.db "PRAGMA user_version"
on SVN 1.7 or later (or od -An -j63 -N1 -t dC .svn/wc.db
if you only have the SQLite 3.0 libraries, YMMV).
来源:https://stackoverflow.com/questions/1364618/how-do-i-determine-the-svn-working-copy-layout-version