【问题标题】:How do I determine the SVN working copy layout version?如何确定 SVN 工作副本布局版本?
【发布时间】:2009-09-01 20:57:32
【问题描述】:

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

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

【问题讨论】:

    标签: svn working-copy


    【解决方案1】:

    如果.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 开始,版本号存储在“user_version”字段的.svn/wc.db SQLite 数据库中。因此,即使.svn/format 升级到版本 12,实际格式版本是 29,未来版本可能不会再更新.svn/format。从.svn/wc.db获取版本号有两种方法:

    1. 如果你的路径中有sqlite3sqlite3 .svn/wc.db "PRAGMA user_version"
    2. 如果您的路径中没有sqlite3,请在十六进制编辑器中打开.svn/wc.db 并读取偏移量0x3c 处的DWORD

    wc.h 中描述了所有格式版本号以及各个 Subversion 版本的版本号。

    【讨论】:

    • 我的文件格式值 = 4。这没有意义。是吗?
    • @ShariqueAbdullah 我相信版本 4 对应于最初的 Subversion 1.0 版本,但我可能弄错了。
    • @ShariqueAbdullah 这听起来更像是存储库格式版本,而不是远程现代工作副本格式版本。
    • 从 Subversion 1.8 开始,这种方法很遗憾地被破坏了。
    • 我已经更新了答案,提到 Subversion 1.7+ 将版本号存储在 SQLite 数据库中(pragma user_version)。 wc.h 的链接还包含 Subversion 1.8 的相关版本号。
    【解决方案2】:

    来自 Stack Overflow 问题Find out SVN working copy version (1.7 or 1.8)

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

    【讨论】:

    • od 命令适用于我认为缺少 SQLite 库的系统。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 2011-12-20
    • 2015-09-12
    • 2012-09-15
    相关资源
    最近更新 更多