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

Wil*_*ara 69 svn working-copy

例如,SVN 1.5客户端有一个工作副本布局,SVN 1.6客户端有不同的布局.我知道当新客户端触及布局时,布局会自动升级.

如果我的系统上有工作副本,我怎样才能找到它正在使用的版面?

Fil*_*ara 123

如果.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及更早.svn/entries版本使用基于XML的文件,较新版本使用较少详细的基于行的文件格式.

从Subversion 1.7开始,版本号存储在.svn/wc.db"user_version"字段的SQLite数据库中.因此即使.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版本的版本号.

  • 从Subversion 1.8开始,这种方法被遗忘了. (2认同)

小智 11

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