72

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

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

4

2 回答 2

129

如果.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.dbSQLite 数据库的“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 版本的版本号。

于 2009-09-01T21:03:54.387 回答
12

从 Stack Overflow 问题中找出 SVN 工作副本版本(1.7 或 1.8)

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

于 2013-12-11T10:59:47.193 回答