如何确定SVN工作副本布局版本?
例如,SVN 1.5客户端有一个用于工作副本的布局,而SVN 1.6客户端有不同的布局。我知道当一个新的客户端接触到布局时,它会自动升级如何确定SVN工作副本布局版本?,svn,working-copy,Svn,Working Copy,例如,SVN 1.5客户端有一个用于工作副本的布局,而SVN 1.6客户端有不同的布局。我知道当一个新的客户端接触到布局时,它会自动升级 如果我的系统上有一个工作副本,我如何才能找到它使用的布局版本?如果.svn/format存在,请读取其中的数字: 版本7是SVN1.3 版本8是SVN1.4 版本9是SVN1.5 如果.svn/format不存在,则版本号位于.svn/entries中的第一行: 版本10是SVN1.6 版本12是SVN1.7 Subversion 1.6是第一个不使用
如果我的系统上有一个工作副本,我如何才能找到它使用的布局版本?如果
.svn/format
存在,请读取其中的数字:
- 版本7是SVN1.3
- 版本8是SVN1.4
- 版本9是SVN1.5
如果
.svn/format
不存在,则版本号位于.svn/entries
中的第一行:
- 版本10是SVN1.6
- 版本12是SVN1.7
.svn/format
的版本。版本7及更高版本使用基于XML的.svn/entries
文件,较新版本使用更不详细的基于行的文件格式
自Subversion 1.7以来,版本号存储在.svn/wc.db
SQLite数据库的“用户版本”字段中。因此,即使将.svn/format
升级到版本12,实际的格式版本仍然是29,未来的版本可能不再更新.svn/format
。要从.svn/wc.db
获取版本号,有两种方法:
sqlite3
,sqlite3.svn/wc.db“PRAGMA user\u version”
sqlite3
,请在十六进制编辑器中打开.svn/wc.db
,并读取偏移量0x3c处的DWORD中描述了所有格式版本号以及相应Subversion版本号。来自堆栈溢出问题:
您可以在svn 1.7或更高版本上使用
sqlite3.svn/wc.db“PRAGMA user_version”
(或者od-An-j63-N1-tdc.svn/wc.db
,如果您只有库,YMMV)。我的文件的格式值为4。这是没有道理的。是吗?@ShariqueAbdullah我相信版本4对应于最初的Subversion 1.0版本,但我可能弄错了。@ShariqueAbdullah听起来更像是存储库格式版本,而不是远程现代工作副本格式版本。从Subversion 1.8开始,这个方法很糟糕,我已经更新了答案,提到Subversion 1.7+将版本号存储在SQLite数据库中(pragma user_version)。到wc.h的链接还包含Subversion 1.8的相关版本号。od
命令适用于我的系统,我认为它缺少SQLite库。谢谢