如何确定 SVN 工作副本布局版本?

例如,SVN 1.5客户机有一个用于工作副本的布局,而 SVN 1.6客户机有一个不同的布局。我知道当新客户端接触到布局时,布局会自动升级。

如果我的系统上有一个工作副本,我怎样才能找到它使用的布局版本?

33726 次浏览

如果 .svn/format存在,请阅读其中的数字:

  • 版本7是 SVN 1.3
  • 版本8是 SVN 1.4
  • 版本9是 SVN 1.5

如果 .svn/format不存在,那么版本号就在 .svn/entries的第一行:

  • 版本10是 SVN 1.6
  • 版本12是 SVN 1.7

Subversion 1.6是第一个不使用 .svn/format的版本。版本7和更老的版本使用基于 XML 的 .svn/entries文件,更新的版本使用更少冗长的基于行的文件格式。

自 Subversion 1.7以来,版本号存储在 .svn/wc.db SQLite 数据库的“ user _ version”字段中。因此,即使 .svn/format被改为版本12,实际的格式版本是29,未来的版本可能不会更新 .svn/format了。要从 .svn/wc.db获得版本号,有两种方法:

  1. 如果你有 sqlite3在你的路径,sqlite3 .svn/wc.db "PRAGMA user_version"
  2. 如果路径中没有 sqlite3,请在十六进制编辑器中打开 .svn/wc.db,并在偏移量0x3c 处读取 DWORD

所有的格式版本号都在 WC.H中描述,同时还有各个 Subversion 版本的版本号。

从堆栈溢出问题 查找 SVN 工作副本版本(1.7或1.8):

可以在 SVN 1.7或更高版本上使用 sqlite3 .svn/wc.db "PRAGMA user_version"(如果只有 SQLite 3.0库 YMMV,也可以使用 od -An -j63 -N1 -t dC .svn/wc.db)。