5

我正在尝试git-cvsimport来自 CVS 的几个不同模块,所有这些模块都位于不同的分支上。

到目前为止,我已经完成了这个(在伪 bash 代码中):

for each ($MODULE, $BRANCH); do
    git-cvsimport -p x -v -d "$CVS_REPO" "$MODULE" -o "$BRANCH" -C "$MODULE"
done

但这为每个模块创建了不同的 git 存储库。如果可能的话,我将如何将它们全部合并为一个?

4

2 回答 2

2

我所做的是修改了 git-cvsimport perl 脚本,我改变了update_index()方法:

子更新索引(\@\@){
    我的 $old = 班次;
    我的 $new = 班次;
    打开(我的 $fh,'|-',qw(git update-index -z --index-info))
        或死“无法打开 git update-index: $!”;
    打印 $fh
        (地图{“0 00000000000000000000000000000000000000000\t$_\0”}
            @$旧),
        (map { '100' . sprintf('%o', $_->[0]) . " $_->[1]\t$_->[2]\0" }
            @$新)
        或死“无法写入 git update-index: $!”;
    关闭 $fh
        或死“无法写入 git update-index: $!”;
    美元?并死“git update-index 报告错误:$?”;
}

至:

子更新索引(\@\@){
    我的 $old = 班次;
    我的 $new = 班次;
    打开(我的 $fh,'|-',qw(git update-index -z --index-info))
        或死“无法打开 git update-index: $!”;
    打印 $fh
        (地图{“0 00000000000000000000000000000000000000000\t$cvs_tree/$_\0”}
            @$旧),
        (map { '100' . sprintf('%o', $_->[0]) . " $_->[1]\t$cvs_tree/$_->[2]\0" }
            @$新)
        或死“无法写入 git update-index: $!”;
    关闭 $fh
        或死“无法写入 git update-index: $!”;
    美元?并死“git update-index 报告错误:$?”;
}

(注意$cvs_tree变量的添加。)

奇迹般有效。执行:

perl git-cvsimport -v ...(其余常规 git-cvsimport 参数)
于 2010-12-13T10:10:13.293 回答
1

从理论上讲,您可以使用git 移植将您的存储库合并为一个:
请参阅“是否有一种干净的方法来处理两个以相同内容开头的原始 git 存储库?”

在实践中,您可能希望查看另一个工具,例如cvs2git,并检查它是否没有以更一致的方式导入分支。

于 2009-07-30T05:55:13.517 回答