使用CVS时需要将项目主干转换为分支

时间:2009-05-25 18:27:02

标签: svn cvs cvs2svn

我正在使用cvs2svn将一个大型的多项目CVS存储库转换为Subversion。它的工作非常好,但有一些CVS项目确实应该是其他项目的分支。

使用选项文件我可以指定项目'ShouldBeBranch'的主干应该放在'/ OtherProject / branches / ShouldBeBranch'中,但我找不到避免为标签创建Subversion目录的方法和ShouldBeBranch项目的分支(它们是空的,但仍然被创建)。

目前唯一可以看到的选项是转换完成后从Subversion删除目录,但我想知道是否有人知道这可以在转换过程中完成?我也查看了符号提示文件,但有270个项目按索引号指定项目看起来太难了!

非常感谢, 大卫

2 个答案:

答案 0 :(得分:2)

据推测,您的“ShouldBeBranch”项目本身就有分支和标签。你希望那些人最终在哪里?

如果您只想将“ShouldBeBranch”项目的主干包含在转换中:

  • 排除“ShouldBeBranch”项目中的所有其他符号
  • 将其trunk_path设置为其他项目中的路径
  • 在您的选项文件中将branches_path和tags_path设置为None(这可以防止它们被创建)

添加“ShouldBeBranch”项目的选项文件部分将包含如下行:

run_options.add_project(
    # ...
    trunk_path='OtherProject/branches/ShouldBeBranch',
    branches_path=None,
    tags_path=None,
    # ...
    symbol_strategy_rules=[
        ExcludeRegexpStrategyRule(r'.*'),
        ],
    )

答案 1 :(得分:1)

导入后进行修正对我来说似乎是最好的。如果您将项目的项目\ trunk移动到分支\某事,Subversion将只跟踪历史记录。

blog post描述了使用转储/加载周期重命名路径的方法。这种方式会改变历史,这样当你回顾文件的历史时,它们似乎总是在分支机构内部。\ / p>

如果你要回到旧版本,你期望它在项目\ trunk中。因此,我认为尝试改变历史不是一件好事。