SVNDumpFilter 在添加之前更改路径?
Posted
技术标签:
【中文标题】SVNDumpFilter 在添加之前更改路径?【英文标题】:SVNDumpFilter changing paths before adding them? 【发布时间】:2014-07-22 14:00:39 【问题描述】:我正在使用svndumpfilter
从更大的存储库中提取单个项目并将它们导入到自己的存储库中。像这样的:
svndumpfilter include --drop-empty-revs --renumber-revs Trunk/Source/Project1 < full.dump > Project1.dump
在一个项目中运行良好,但在第二个项目中,我注意到生成的过滤转储不是从添加路径开始的。查看前两个修订版(重新编号):
SVN-fs-dump-format-version: 2
UUID: c6612063-4e6b-459c-a579-78605fb1e4b5
Revision-number: 0
Prop-content-length: 56
Content-length: 56
K 8
svn:date
V 27
2010-05-11T20:45:07.903005Z
PROPS-END
Revision-number: 1
Prop-content-length: 128
Content-length: 128
K 7
svn:log
V 27
Fixed code after branching.
K 10
svn:author
V 6
somedude
K 8
svn:date
V 27
2010-09-21T23:07:51.719341Z
PROPS-END
Node-path: Trunk/Source/Project1/Project1.csproj
Text-content-md5: 9d127596909e2a9921f1ec1c0223e1ed
Node-action: change
Text-content-sha1: 22eb675e0a5bfb41092de6ed39dc7c4d2a15dbd5
Node-kind: file
Text-content-length: 5178
Content-length: 5178
注意到它是如何尝试“改变”Trunk/Source/Project1/Project1.csproj
在它首先添加它之前?毫不奇怪,在过滤转储上运行 svnadmin load
时,我得到“找不到文件”。有什么想法吗?
【问题讨论】:
【参考方案1】:有三种方式:
-
在加载转储文件之前通过提交添加缺少的文件夹:
svn mkdir http://server/svn/project/Trunk -m "Created Trunk"
手动将创建Trunk
文件夹的节点记录添加到转储中:
Revision-number: 1
Prop-content-length: 128
Content-length: 128
K 7
svn:log
V 27
Fixed code after branching.
K 10
svn:author
V 6
somedude
K 8
svn:date
V 27
2010-09-21T23:07:51.719341Z
PROPS-END
Node-path: Trunk/
Node-kind: dir
Node-action: add
Prop-content-length: 48
Content-length: 48
PROPS-END
Node-path: Trunk/Source/Project1/Project1.csproj
Text-content-md5: 9d127596909e2a9921f1ec1c0223e1ed
Node-action: change
Text-content-sha1: 22eb675e0a5bfb41092de6ed39dc7c4d2a15dbd5
Node-kind: file
Text-content-length: 5178
Content-length: 5178
根本不要使用svndumpfilter
,因为它被设计破坏了(svndumpsanitizer 的home page 很好地解释了原因)。您很有可能会在转储中进一步遇到其他错误。
我目前正在拆分一个极其复杂的 repo,其中包含很多合并、移动和其他类似的东西,我可以说周围没有任何东西可以 100% 正确地处理拆分 svn 转储。
罢工>
例如,众所周知的svndumpfilterIN 包含至少三个主要错误(我只设法报告了one of them,而另外两个更邪恶)并且在我的回购中惨遭失败。稍后我会尝试在 GitHub 上分享它的固定版本,但目前我不推荐它。
所以在我看来,你最好的机会是尝试上面提到的svndumpsanitizer 而不使用--redefine-root
选项,因为它也有错误(错误报告即将到来)。如果您使用的是 Windows,它可以使用最新的 Visual Studio Community 2013(免费)进行正常编译。
2017 年更新
上面的最后两段不再相关,因为我已经修复了svndumpfilterIN 中的所有问题,这些问题阻止了我转换我的回购。 My PR 已合并到基础仓库中,请尝试一下。我仍然不能保证 100% 成功,但现在你的机会要高得多。
【讨论】:
谢谢,我不记得我是如何解决这个问题的,但我想我最终手动编辑了文件并在需要的地方添加了丢失的文件/文件夹。以上是关于SVNDumpFilter 在添加之前更改路径?的主要内容,如果未能解决你的问题,请参考以下文章