例如,SVN 1.5客户端具有用于工作副本的一种布局,而SVN 1.6客户端具有不同的布局。我了解,当新客户触摸该布局时,该布局会自动升级。
如果我的系统上有工作副本,如何找到其使用的布局版本?
Answers:
如果.svn/format
存在,则读取其中的数字:
如果.svn/format
不存在,则版本号位于的第一行.svn/entries
:
Subversion 1.6是第一个不使用的版本.svn/format
。版本7和更早的.svn/entries
版本使用基于XML的文件,而较新的版本使用较少的基于行的详细文件格式。
从Subversion 1.7开始,版本号存储在.svn/wc.db
SQLite数据库的“ user_version”字段中。因此,即使.svn/format
版本12发生了变化,实际的格式版本仍为29,将来的版本可能不再更新.svn/format
。要从中获取版本号,.svn/wc.db
有两种方法:
sqlite3
路,sqlite3 .svn/wc.db "PRAGMA user_version"
sqlite3
的路径中没有,请.svn/wc.db
在十六进制编辑器中打开并在偏移量0x3c处读取DWORD在wc.h中描述了所有格式版本号以及相应的Subversion发行版的版本号。
从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)。
od
命令在我认为缺少SQLite库的系统上有效。谢谢!