修订日志中的 DELTA 与 PLAIN

DELTA versus PLAIN in revision logs

我在网上搜索了一下,没有找到一个好的答案,但出于某种原因(在升级到 TortoiseSVN 1.9.0 之后?)我的 Subversion 修订日志文件格式发生了变化,这让 Jenkins 感到困惑SVN插件,我很困惑为什么。

.../Repository/db/revs/0 中,查看修订文件的尾部,我得到了 tail -n40 116 的以下内容,一个较旧的修订:

PLAIN
K 8
branches

[elided]

ub-3.0.t115-38 modify-file true false /trunk/foo/bar.c

17579 17721

对于 tail -n21 117,HEAD 修订版:

DELTA 116 17463 103
SVNgfK▒a19

[elided]

ua-3.0.t116-39 modify-file true false /trunk/baz/wibble.h

4646 4785

是否有一些工具可以将这些 DELTA 修订日志转换为 PLAIN 格式,或者是否有一些设置可以防止创建 DELTA 修订?

更新:这个问题似乎是由 in this bug report.

引起的

您永远不应该手动触摸存储库修订文件。除了 Subversion 开发人员之外,它们对任何人都没有任何意义。您试图通过这种方式解决什么问题?看来你走错方向了。

PLAINDELTA 总是在 Subversion FSFS 修订文件中。此外,Jenkins(准确地说是它的 SVN 插件)应该没有存储库后端格式的问题,因为它使用客户端层来访问存储库。

如果您对 DELTAPLAIN 的含义感兴趣,请阅读位于 https://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_fs_fs/structure 的 FSFS 存储库后端设计文档。

这是对我有用的完整答案。

首先,following this guide,并假设 /cygdrive/c/SVNRepository 作为存储库位置,执行以下操作以获取当前存储库的快照:

 cd /cygdrive/c
 svnadmin dump SVNRepository/ >copy.dump
 rm -rf SVNRepository
 svnadmin create --compatible-version 1.8 SVNRepository

请注意 --compatible-version 1.8 非常重要,因为 Jenkins 还不能理解新的 1.9 格式。

现在使用您选择的编辑器,加载 SVNRepository/db/fsfs.conf,例如:

vi SVNRepository/db/fsfs.conf

找到以下两行(对我来说是第 61 和 69 行):

# enable-dir-deltification = true
# enable-props-deltification = true

并将它们更改为:

enable-dir-deltification = false
enable-props-deltification = false

现在将快照导入新数据库:

svnadmin load SVNRepository/ < copy.dump

现在,詹金斯应该又回来工作了!