【发布时间】:2010-08-23 13:07:11
【问题描述】:
我遇到了一种特殊情况,我需要删除 Subversion 存储库中一系列提交的操作。 (/trunk /tags /branches) 的全部内容都被标记并在发现错误时随后被删除。我会简单地使用 svndumpfilter 删除有问题的节点,但有人在稍后重新使用了错误的标签名称,因此基于路径的排除会导致其他问题。我需要手动编辑 12GB 的转储文件。 我需要编辑一系列 15 个连续修订,它们以下列格式显示在转储中:
Revision-number: 60338
Prop-content-length: 143
Content-length: 143
K 7
svn:log
V 41
Tagging test prior to creating xx branch
K 10
svn:author
V 7
userx
K 8
svn:date
V 27
2009-05-27T15:01:31.812916Z
PROPS-END
Node-path: test/tags/XX_8_0_FINAL
Node-kind: dir
Node-action: add
Node-copyfrom-rev: 60337
Node-copyfrom-path: test
根据我所做的测试,我知道我需要将以上部分更改为以下部分
Revision-number: 60338
Prop-content-length: 112
Content-length: 112
K 7
svn:log
V 38
This is an empty revision for padding.
K 8
svn:date
V 27
2009-05-27T15:01:31.812916Z
PROPS-END
还有 14 个修订版需要进行相同的替换。 尝试在 VIM 中手动编辑文件是非常不切实际的。转储文件是二进制和 ascii 文本的混合体。 如果有人有任何可以帮助我的 awk/sed 魔法,我将不胜感激。
【问题讨论】:
标签: svn sed awk svndumpfilter