3

階層的な依存構造を持つ多くのライブラリを含む構造を開発した大きなプロジェクトがあります。

さて、別のプロジェクトに移ります。これをライブラリごとに 1 つのリポジトリと、1 つ以上のプロジェクト固有のリポジ​​トリに分割しますが、履歴は保持します。事実上、これは、1 つの大きなリポジトリのサブディレクトリを、サブモジュールまたはその他の適切なメカニズムを介して処理される可能性のある依存関係を持つ個別のリポジトリに変換することを意味します。この種の再構築操作は、あまり苦労せずに git で可能ですか?

4

1 に答える 1

2

これは依存します。新しいリポジトリをサブモジュールとして追跡し、そのサブモジュールをずっと使用していたように履歴を書き換えたい場合は、git filter-branchそのサブディレクトリに対してそれを行うスクリプトを作成する必要があります。トリッキーな部分は、サブモジュールにも分岐とマージを反映させることです。

これからのみこれを行いたい場合は、特定のパスのコミットを新しいリポジトリに移動するのは簡単です。新しいブランチでフィルター ブランチを実行し、変更を含む履歴のみを含めるだけです。新しいリポジトリを作成し、そのブランチのみをフェッチします。このリポジトリをサブモジュールとして追加し、この時点からの後続の変更を追跡できるようになりました。

于 2012-09-10T22:39:05.470 に答える