如何更改svn存储库的第一个节点?

时间:2014-02-01 13:29:21

标签: svn

我有一个存储库,其中包含一个名为 code 的节点,我想删除它。

Actual root

我希望以root身份使用以下内容,而不使用父节点代码

This should be root

有没有办法改变它?
我的想法也是使用转储更改转储和重新导入。但我希望有一种更简单的方法来保持基于新起始节点的完整历史记录。

如果有人想知道为什么有节点。这是使用 svnsync

的结果

3 个答案:

答案 0 :(得分:2)

您应该使用 svn copy 命令将这3个文件夹从代码复制到root,然后 svn remove 删除代码。使用 svn copy 会阻止您的提交历史记录,您无需担心 svn:mergeinfo 。手动更改 svn:mergeinfo

绝不是一个好主意

答案 1 :(得分:2)

将它们移动到根目录。将完整的URL替换为下面的目录。

svn mv /code/branches /branches
svn mv /code/trunk /trunk
svn mv /code/tags /tags
svn rm /code

答案 2 :(得分:0)

我为我找到了合适的方式。我正在使用svn中的转储加载功能 在这种情况下,代码是文件夹结构中的第一个节点,应该将其删除。

转储后,我用sed:

更改转储文件
sed -i -r 's/(Node-[a-z-]+): code\//\1: /'

此外,需要更改 svn:mergeinfo 块中的pathes 我是通过我的另一个问题(Search and replace accross multiple lines in large files)的一些正确的好答案来完成的。

最后一步是使用加载进行正常导入。