How do I determine the SVN working copy layout version?

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:

  1. if you have sqlite3 in your path, sqlite3 .svn/wc.db "PRAGMA user_version"
  2. 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.


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).