如何使用sed / awk或其他工具来帮助搜索和替换12GB的subversion转储文件
我有一个特殊的情况,我需要在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魔法,我会非常感激。
没有找到相关结果
已邀请:
4 个回复
缮记箔
的单独文件中。然后:
镶骄册筷
感秆暴壳
这给了我“坏”提交的节点操作文件中的确切行号。 然后我使用sed删除每个提交的节点操作范围(按行号),如下所示:
事实证明这很快。 对于那些好奇的人,我需要完全删除它们的原因是因为我们的存储库扫描程序(Atlassian Fisheye)需要花费数天来索引错误的提交。我使用的排除规则应该解决这个问题,但事实证明我发现了一个排除规则的错误,该规则将在下一版Fisheye中修复。 看到: http://jira.atlassian.com/browse/FE-2752
擅香