5

私はgit-cvsimportCVSからいくつかの異なるモジュールを試していますが、それらはすべて異なるブランチにあります。

これまでのところ、これを(疑似bashコードで)実行しました:

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

ただし、モジュールごとに異なるgitリポジトリが作成されます。リモートでさえ可能である場合、どのようにそれらをすべて1つにマージしますか?

4

2 に答える 2

2

私が行ったことは、git-cvsimport perlスクリプトを変更したことで、update_index()メソッドを次のように変更しました。

sub update_index(\ @ \ @){
    私の$old=シフト;
    私の$new=シフト;
    open(my $ fh、'|-'、qw(git update-index -z --index-info))
        または「gitupdate-indexを開くことができません:$!」;
    $fhを印刷する
        (マップ{"0 0000000000000000000000000000000000000000 \ t $ _ \0"}
            @ $ old)、
        (map {'100'。sprintf('%o'、$ _-> [0])。 "$ _-> [1] \ t $ _-> [2] \ 0"}
            @ $ new)
        または「gitupdate-indexに書き込めません:$!」;
    $fhを閉じる
        または「gitupdate-indexに書き込めません:$!」;
    $?そして死ぬ"gitupdate-index報告されたエラー:$?";
}

に:

sub update_index(\ @ \ @){
    私の$old=シフト;
    私の$new=シフト;
    open(my $ fh、'|-'、qw(git update-index -z --index-info))
        または「gitupdate-indexを開くことができません:$!」;
    $fhを印刷する
        (マップ{"0 0000000000000000000000000000000000000000 \ t $ cvs_tree / $ _ \0"}
            @ $ old)、
        (map {'100'。sprintf('%o'、$ _-> [0])。 "$ _-> [1] \ t $ cvs_tree / $ _-> [2] \ 0"}
            @ $ new)
        または「gitupdate-indexに書き込めません:$!」;
    $fhを閉じる
        または「gitupdate-indexに書き込めません:$!」;
    $?そして死ぬ"gitupdate-index報告されたエラー:$?";
}

$cvs_tree(変数の追加に注意してください。)

チャームのように機能します。実行するには:

perl git-cvsimport -v ...(残りの通常のgit-cvsimport引数)
于 2010-12-13T10:10:13.293 に答える
1

理論的には、gitgraftsを使用してリポジトリを1つにマージできます。「同じコンテンツで始まった2つの元のgitリポジトリを処理するクリーンな方法はありますか?」を
参照してください。

実際には、 cvs2gitのような別のツールを調べて、より一貫した方法でブランチをインポートしないかどうかを確認することをお勧めします。

于 2009-07-30T05:55:13.517 に答える