gpt4 book ai didi

svn - 从 SVN 转储中删除空修订时出现问题

转载 作者:行者123 更新时间:2023-12-01 16:18:56 26 4
gpt4 key购买 nike

我正在尝试拆分包含多个项目的旧 SVN 存储库。
我试图转储整个存储库,过滤它,然后加载到一个新的存储库,但由于以前的副本和重命名,svndumpfilter 以无效的复制源路径错误结束,除非我包含更多文件夹:

svnadmin dump OldRepository > OldRepository.dump
svndumpfilter include --drop-empty-revs --renumber-revs "/UnwantedFolder1" "/UnwantedFolder2" "/WantedFolder" < OldRepository.dump > WantedRepository.dump

作为解决方法,我在 svnadmin 转储中使用了排除:

svnadmin dump OldRepository --exclude "/UnwantedFolder1" --exclude "/UnwantedFolder2" --exclude "/EvenMoreUnwantedFolders" > WantedRepository.dump

我可以将这个转储加载到一个新的存储库中,唯一的问题是它充满了空修订。我尝试使用 svndumpfilter 来消除它们,但从输出来看它似乎保留了所有这些修订(并将它们重新编号为原始编号)。

svndumpfilter --drop-empty-revs --renumber-revs include "/" < WantedRepository.dump > FilteredWantedRepository.dump

另一件奇怪的事情是,即使我在没有开关的情况下进行过滤,将生成的转储加载到新的存储库中也会以错误结束:

svndumpfilter include "/" < WantedRepository.dump > NotReallyFilteredWantedRepository.dump
svnadmin create NotReallyFilteredWantedRepository
svnadmin load NotReallyFilteredWantedRepository < NotReallyFilteredWantedRepository.dump

svnadmin: E140001: Dumpstream data appears to be malformed

我发现两个转储文件之间的唯一区别是在 WantedRepository.dump 中有

Revision-number: 1
Prop-content-length: 10
Content-length: 10

PROPS-END

Revision-number: 2
Prop-content-length: 10
Content-length: 10

PROPS-END

虽然在 NotReallyFilteredWantedRepository.dump 中缺少 PROPS-END 行。

Revision-number: 1
Prop-content-length: 10
Content-length: 10


Revision-number: 2
Prop-content-length: 10
Content-length: 10

svndumpfilter 的输出有什么问题?
如何删除空的修订版?

最佳答案

我做了一些测试,看起来没有简单的方法可以做到这一点,因为 svnadmin dump 没有与 svndumpfilter 相同的选项。在关于 --include 和 --exclude 的原始问题的评论中提到了选项(--drop-empty-revs 等),但它们没有实现:https://issues.apache.org/jira/browse/SVN-4729
我什至不确定 --exclude 选项是最终版本还是仍在开发中。

只要您没有复制和重命名,svndumpfilter 就可以正常工作。
如果有副本,那么你要么必须将它们包含在 svndumpfilter 中,要么使用 svnadmin dump --exclude,但有一些注意事项:

  1. 仅包含对排除项目的修改的修订将被替换为完全没有属性的空修订(与 svndumpfilter 生成的空修订不同)。您可以手动删除它们,但对它们使用 svndumpfilter 只会删除它们的 PROPS-END 行,生成格式错误的转储文件。

  2. 包含排除项修改的修订将丢失其 svn:log 属性,即使它们也包含包含项的修改。

例子
创建文件夹 B 并将其重命名为 A 后,完整转储包括:

Revision-number: 1
Prop-content-length: 108
Content-length: 108

K 10
svn:author
V 6
654321
K 8
svn:date
V 27
2019-11-25T09:55:46.768984Z
K 7
svn:log
V 8
Folder B
PROPS-END

Node-path: B
Node-kind: dir
Node-action: add
Prop-content-length: 10
Content-length: 10

PROPS-END


Revision-number: 2
Prop-content-length: 115
Content-length: 115

K 10
svn:author
V 6
654321
K 8
svn:date
V 27
2019-11-25T09:58:38.976139Z
K 7
svn:log
V 14
renamed B to A
PROPS-END

Node-path: A
Node-kind: dir
Node-action: add
Node-copyfrom-rev: 1
Node-copyfrom-path: B


Node-path: B
Node-action: delete

从转储中排除 B 后(svnadmin dump --exclude "/B"Repository > AOnly.dump),修订版 1 被空修订版替换,修订版 2 丢失其 svn:log属性:

Revision-number: 1
Prop-content-length: 10
Content-length: 10

PROPS-END

Revision-number: 2
Prop-content-length: 83
Content-length: 83

K 10
svn:author
V 6
654321
K 8
svn:date
V 27
2019-11-25T09:58:38.976139Z
PROPS-END

Node-path: A
Node-kind: dir
Node-action: add
Prop-content-length: 10
Content-length: 10

PROPS-END

关于svn - 从 SVN 转储中删除空修订时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58994411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com