我正在尝试git-cvsimport
来自CVS的几个不同模块,所有模块都在不同的分支上。
到目前为止,我已完成此操作(使用伪bash代码):
for each ($MODULE, $BRANCH); do
git-cvsimport -p x -v -d "$CVS_REPO" "$MODULE" -o "$BRANCH" -C "$MODULE"
done
但是为每个模块创建了不同的git存储库。如果可能的话,我怎么把它们合并成一个呢?
答案 0 :(得分:2)
我所做的是修改了git-cvsimport perl脚本,我更改了update_index()
方法:
sub update_index (\@\@) { my $old = shift; my $new = shift; open(my $fh, '|-', qw(git update-index -z --index-info)) or die "unable to open git update-index: $!"; print $fh (map { "0 0000000000000000000000000000000000000000\t$_\0" } @$old), (map { '100' . sprintf('%o', $_->[0]) . " $_->[1]\t$_->[2]\0" } @$new) or die "unable to write to git update-index: $!"; close $fh or die "unable to write to git update-index: $!"; $? and die "git update-index reported error: $?"; }
要:
sub update_index (\@\@) { my $old = shift; my $new = shift; open(my $fh, '|-', qw(git update-index -z --index-info)) or die "unable to open git update-index: $!"; print $fh (map { "0 0000000000000000000000000000000000000000\t$cvs_tree/$_\0" } @$old), (map { '100' . sprintf('%o', $_->[0]) . " $_->[1]\t$cvs_tree/$_->[2]\0" } @$new) or die "unable to write to git update-index: $!"; close $fh or die "unable to write to git update-index: $!"; $? and die "git update-index reported error: $?"; }
(注意添加了$cvs_tree
变量。)
像魅力一样工作。执行:
perl git-cvsimport -v ... (rest of regular git-cvsimport arguments)
答案 1 :(得分:1)
理论上,您可以使用 git grafts 将您的存储库合并为一个:
见"Is there a clean way to handle two original git repositories that started with the same content?"
在实践中,您可能希望查看其他工具,例如 cvs2git ,并检查它是否以更一致的方式导入分支。