以前にこれを行ったことがないので、私はおそらく初心者です... 古い CVS リポジトリを GitLab に移行しようとしていますが、ネストされた CVS プロジェクトを処理する方法がわかりません。私たちはそれらをたくさん持っています (つまり、約 1600 の .project ファイルが CVS リポジトリに点在しています)。約 10 年分のコミットがあり、合計で約 21GB あり、2 つの CVS リポジトリ ディレクトリにまたがっています。
一般的な構造は $client/$product ですが、これらのほとんどには多数のサブプロジェクト (多くの場合非常に多く) が含まれています。
私がこれまでに試したこと:
モノリシック: より小さい CVS リポジトリをインポートしようとしました - 最初のパス 1 でメモリが不足し (メモリを追加することで解決)、パス 5 でディスク容量が不足しました (VMware データストアがほぼいっぱいであるため、実際にはディスクを追加できません -聞かないで!)。
クライアント別: cvs2git は 1 つのクライアントで完了し、git --fast-import を実行しましたが、すべてのサブプロジェクトに気付きました。Git はマージされた履歴を気にしませんが、コーダーは気にします。プロジェクト全体が通常同じ CVS リポジトリ内にあり、プロジェクトのクローンを作成するプロセスが複雑になることがわかります。
クライアント内のプロジェクトごと: (2) のプロダクションを使用して、find で深さ優先で CVS リポジトリを再帰し、.project ファイルを探します。git --fast-import でサブプロジェクトをインポートする前に、それぞれにサブディレクトリを作成し、それぞれで git init --bare を実行しました。毎回 cvs2git の BLOB ファイルとダンプ ファイル全体を変更する必要があるため、これにはかなりの時間がかかりました。最終的に適切な git 階層になったかどうかはわかりません。
だから... もうぐるぐるするのではなく、他の誰かがこの種のことをする必要があったに違いないと確信しているので、ここで尋ねようと思いました. どんなポインタでも大歓迎です。
[編集]:すべての提案と助けに感謝します。今は私の手に負えません - 彼ら (開発者) は、CVS プロジェクトを少しずつ移行することを決定しました。その目的のために、古い cvs は読み取り専用の参照として保持され、プロジェクトは git "pristine" にチェックインされるため、"BG" (git の前) の履歴については cvs を参照しますが、 「AG」の歴史、彼らはgitを参照します。
深くネストされたプロジェクトの問題については、Java のクラス階層に関係しており、各プロジェクトが 1 つのクラスに相当するという説明がありました。彼らのビルド プロセスには、cvs プロジェクトを自動的に Java .jar ファイルなどに変更する機能があります。そこにはたくさんのJavaがあります。