1

git サブモジュールを使用すると、複数のリポジトリをサブモジュールとしてそれぞれのパスにチェックアウトできます。次に例を示します。

% git submodule add git@.../repo1.git ./here/is/1
% git submodule add git@.../repo2.git ./here/is/2

repo1しかし、とのrepo2両方のコンテンツを 1 つのパスにチェックアウトする必要がある場合はどうすればよい./here/is/3でしょうか?

基本的に、ユーザーがそうするときに、クライアント側の非常に厳格なディレクトリ階層にすべてチェックアウトする必要があるサブモジュールリポジトリのメトリクスのたわごとがありますgit clone --recursive ...

すべてのサブモジュールの内容をにチェックアウトしたい./somepath。それはできますか?

私が考えたことの 1 つは、シンボリック リンクを使用することでしたが、それは間違っていると感じました。

編集:

1上記のとの内容を2、クライアントの同じターゲット ディレクトリに配置したいと考えています。クローン作成後にユーザーに手動でスクリプトを実行させることでこれを行うことができます (単一のファイルを git で追跡することはできません) が、これを行うためのよりクリーンな方法が必要なようです-各サブモジュールのシンボリックリンクを手動で作成しますは大変な作業であり、サブモジュールの抽象化がこれを処理できるように思われます。

多分私の質問はだまされていますか?

4

1 に答える 1

1

1 つの方法は、別の親リポジトリを作成し、サブモジュールを直接宣言することです。

newParentRepo/
  1/
  2/
  3/
  ...

その親レポは複製できます --recursive で./somepath、サブモジュールは直下になります./somepath(それぞれのルートディレクトリ1/、、2/...)。

2 番目のリポジトリがサブモジュール SHA1 の正しいリストを記録するには、最初の親リポジトリによって記録されたサブモジュールの SHA1 を 2 番目の親リポジトリに同期する必要があります。

于 2013-02-26T07:58:10.860 に答える