【发布时间】:2012-10-18 14:01:24
【问题描述】:
我认为这可能是 SVN 故意不允许的,但我无法通过搜索得到明确的答案。
我想知道是否可以将 SVN 存储库中的路径移动到新位置,并以这样一种方式移动历史记录,即存储库的行为就像内容始终存在于这个新位置一样。 svn rename/mv 的行为是将内容移动到当前和未来修订的新路径,但以前的修订仍然指向旧位置。
如前所述,我可以看到这从本质上破坏了存储库历史的有效性(并且需要重写以前的修订版),但它似乎也可能是其他用户一直在寻找的东西,因此可能是可能的。如果我理解正确,这可以通过 rebase 在 git 中实现。
更新:
看来,如果我使用 svnadmin dump 转储 repo 内容并使用 svndumpfilter 过滤到两个单独的转储中,然后将这些转储加载到不同的位置,则新位置仍将包含旧存储库路径中附加的任何前导路径。为了说明,如果我的仓库“/trunk/PathA”中有一条路径,并且我想将它移动到“/trunk/PathB”,并且我按照找到here的方法进行移动,它看起来会进入“/主干/PathB/主干/PathA”。
【问题讨论】:
-
我认为很难找到这个答案的部分原因是它是一个晦涩难懂的用例,从搜索的角度来看,它与常见用例非常相似.
-
只是出于兴趣,为什么要这样做?这似乎是一件令人惊讶的事情。
-
@Dughall 好问题,因为场景比这个特定用例更广泛。我正在使用 svn-importer 工具 (code.google.com/p/svnimporter) 从其他版本控制工具中以 svn 格式导出完整的版本历史记录。该工具会创建一个 svn 转储文件作为其进程的最终结果。将此转储的内容加载到新的 svn 存储库时,我想知道是否可以将此存储库的某些文件夹移动到新位置。
标签: svn