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

如何确定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 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及更高版本使用基于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库。谢谢