如何在不丢失历史记录的情况下从 SVN 存储库中删除***目录?

Posted

技术标签:

【中文标题】如何在不丢失历史记录的情况下从 SVN 存储库中删除***目录?【英文标题】:How do I remove a top-level directory from an SVN repository without losing history? 【发布时间】:2011-06-21 17:38:01 【问题描述】:

我有一个具有以下布局的 SVN 存储库:

trunk/somedir/a
             /b
             /[et cetera]

branches/branch1/somedir/a
                        /b
                        /[et cetera]

branches/branch2/somedir/a
                        /b
                        /c

整个存储库中有大约 60 个分支和大约 17000 个修订版本。不幸的是,本地惯例是将svn:mergeinfo 信息保留在somedir 目录中,而不是分支的根目录中。这在尝试使用 Fisheye 等解析工具以及git svn 和 hg convertextension 等迁移工具时造成了一些困难。

当然,我可以使用 svn move 并正确重新排序所有内容 - 但我真的很想在历史上这样做,以便转换工具更合理地工作。我是否必须为此编写自定义工具,或者有没有办法使用svnadminsvndumpfilter 来做到这一点?

【问题讨论】:

【参考方案1】:

svn move 对历史没问题。但是分支之间的合并将变得困难。 (找出为什么移动和重命名在 svn 中有问题)。 我有类似的问题,我等到那一刻只有主干和重组的存储库结构。 合并信息(您可以将合并信息从 somedir 复制到主干。它只是 svn 属性。

我还没有尝试过 svnadmin 工具,如果你成功了,现在就告诉我:)

【讨论】:

不幸的是,我的仓库永远不会处于仅存在主干的状态;我们同时支持多个版本。太糟糕了!

以上是关于如何在不丢失历史记录的情况下从 SVN 存储库中删除***目录?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不丢失“this”上下文的情况下从 React 组件中写入 apollo 缓存

Git:如何在不丢失当前分支的情况下克隆项目?

当我在存储库中丢失一些修订时,如何转储所有 svn 数据?

将代码从 svn 迁移到 google 代码

SVN和GIT提交历史记录和代码差异

Git 可以在不丢失历史记录的情况下重组我的文件夹吗?