【发布时间】:2009-09-01 20:57:32
【问题描述】:
例如,SVN 1.5 客户端具有一种用于工作副本的布局,而 SVN 1.6 客户端具有不同的布局。据我了解,当新客户触及布局时,布局会自动升级。
如果我的系统上有一个工作副本,我如何才能找到它正在使用的布局版本?
【问题讨论】:
标签: svn working-copy
例如,SVN 1.5 客户端具有一种用于工作副本的布局,而 SVN 1.6 客户端具有不同的布局。据我了解,当新客户触及布局时,布局会自动升级。
如果我的系统上有一个工作副本,我如何才能找到它正在使用的布局版本?
【问题讨论】:
标签: svn working-copy
如果.svn/format存在,则读取其中的数字:
如果.svn/format 不存在,则版本号在.svn/entries 的第一行:
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获取版本号有两种方法:
sqlite3,sqlite3 .svn/wc.db "PRAGMA user_version"
sqlite3,请在十六进制编辑器中打开.svn/wc.db 并读取偏移量0x3c 处的DWORDwc.h 中描述了所有格式版本号以及各个 Subversion 版本的版本号。
【讨论】:
来自 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 库的系统。谢谢!