How do I determine the SVN working copy layout version?

SvnWorking Copy

Svn Problem Overview


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?

Svn Solutions


Solution 1 - Svn

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.

Solution 2 - Svn

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionWilliam LearaView Question on Stackoverflow
Solution 1 - SvnFilip NavaraView Answer on Stackoverflow
Solution 2 - Svnuser3090766View Answer on Stackoverflow