【问题标题】:CVS to SVN conversion and reorganizing branchesCVS 到 SVN 的转换和重组分支
【发布时间】:2008-08-18 09:26:17
【问题描述】:

我正在从现有的 CVS 存储库转换为 SVN 存储库。 CVS 存储库的分支很少,我想在转换时重命名分支。

想要的转化是这样的:

CVS branch         SVN branch
HEAD       ->      branches/branchX
branchA    ->      trunk
branchB    ->      branches/branchB
branchC    ->      branches/branchC

即CVS HEAD变成普通分支,CVS branchA变成SVN主干。

CVS 和 SVN 存储库将在同一台 linux 机器上。

如何做到这一点?

CVS 分支A 成为 SVN 主干而忽略所有其他 CVS 分支的转换可能就足够了。

【问题讨论】:

    标签: svn cvs


    【解决方案1】:
    我对保留提交历史特别感兴趣。如果我在转换后在 SVN 中重命名和移动分支,是否会保留历史记录?

    是的。 Subversion 还跟踪目录结构的更改,即使文件在树中移动,所有版本历史记录也会保留。

    我建议使用cvs2svn 转换存储库,包括分支和标签。一旦存储库在 Subversion 中,您可以随意移动分支和标签。这也保留了实际标签和分支被重命名的历史,这在以后的历史背景中可能会很有趣。

    【讨论】:

    • 我正在使用 cvs2svn,但我只想转换特定的分支和 HEAD,但 cvs2svn 只有分支的“排除”功能,而不是“包含”。那么如何将 HEAD 转换为多一个分支呢?
    • 我猜你可以全部转储,然后使用 svndumpfilter 过滤掉你不想要的东西?
    • 我认为 svndumpfilter 不会删除未提及的分支。你知道其他解决方案吗?
    • 不确定“未提及的分支”是什么意思,但 svndumpfilter 同时具有 --include 和 --exclude 参数。如果您告诉 cvs2svn 使用 "/trunk"、"/branches" 和 "/tags" 作为根文件夹,则可以使用 'svndumpfilter --include "/trunk" 来提取树干(CVS 中的 HEAD)和特定分支--include "/branches/" '
    【解决方案2】:

    自从我进行 CVS -> SVN 转换以来已经有一段时间了,而且自从我使用非平凡的分支结构进行转换以来可能还要更长的时间。由于 SVN 可以相当轻松地在目录树中移动,因此您可以先进行整个转换,然后再在 SVN 中完全整理出主干/分支结构。

    如果您确实做到了这一点并且在 SVN 中移动整个目录树,那么最好在每个树重命名/移动步骤之后提交。只是需要记住的一点。

    【讨论】:

      【解决方案3】:

      Subversion 分支是目录,因此您可以在导入完成后移动分支,不会丢失任何历史记录。

      【讨论】:

        【解决方案4】:

        一些额外的信息来支持接受的答案:

        cvs2svn 不允许从主干到分支或从分支到主干的转换

        所以一旦你转换成 svn 就移动东西是最好的方法。

        【讨论】:

          【解决方案5】:

          可以在转换后移动主干目录和分支目录,但这需要一个显式的转换后 SVN 提交,该提交将保留在您的 SVN 历史记录中,使历史探索更加复杂。

          但您确实可以使用--symbol-hints=symbol-hints.txt 命令行选项或(如果您使用选项文件进行转换)SymbolHintsFileRule('symbol-hints.txt') 符号告诉 cvs2svn 将主干和分支存储到您想要的 SVN 路径策略规则,其中symbol-hints.txt 是一个包含如下行的文件:

          . .trunk. trunk branches/branchX .
          . branchX branch trunk .
          

          请注意,某些由 cvs2svn 自动生成的提交消息(例如,用于创建分支)会提及原始分支名称。

          【讨论】:

            【解决方案6】:

            虽然在转换完成后移动分支是可能的,但最好设置 cvs2svn 配置文件来准确指定每个现有分支的名称。这样做的好处之一是 FishEye 会更好地理解输出。

            【讨论】:

              【解决方案7】:

              我对保存提交历史特别感兴趣。如果我在转换后在 SVN 中重命名和移动分支,是否会保留历史记录?

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2010-11-11
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2021-11-04
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多