42

私のプロジェクトでは、いくつかの Git リポジトリに保存されているサードパーティ コードを使用する必要があります。私のプロジェクトは (別の) Git リポジトリにも保存されています。主なプロジェクトで私と一緒に働いている人が何人かいて、私はメンテナーです。

以前のプロジェクトでは、依存関係を手動で Git 作業ツリーにコピーし、使用するバージョンを指定する小さなファイルを追加していました。

依存関係の1つを毎日更新する必要があり、ほとんどの場合、主プロジェクトへの変更と相まって、自分でコードを提供する必要があるため、これはかなり不快です。

管理を行うために Git サブモジュールを試すことにしました。それらを試せば試すほど、イライラします。おそらく、手動コピーの方が優れているようにさえ思えます。

ここに私の懸念のいくつかがあります:

  • 単一のコマンドで一貫したリポジトリの状態を取得できなくなりました (git checkout今は必要git submodule update --initです)。
  • 一部の Git ツールを適切に使用できません (git archiveが最も顕著です)。
  • メイン プロジェクトからのサブモジュールへのステータス変更/差分を確認できません。
  • 私が難しい方法で見つけたように、およびオプションでgit submoduleは機能せず、現在のディレクトリを「作業ツリーのトップレベル」に物理的に変更する必要があります。--git-dir--work-tree

サブモジュールのワークフロー (つまり、1 つの操作 == 1 つのコマンド) を合理化するために、Git のかなり厚いラッパーを作成する必要があるようです。これは悲しいです。

Git から離れたり、サブプロジェクトの開発を完全にメイン プロジェクトに統合したりすることはできないことに注意してください。

もしかして私の使い方git submodulesが悪いのでしょうか?ワークフローに関する適切なチュートリアルはありますか?

適切な答えがわからなくても声を上げてください。私の懸念を共有してください。:-)

4

2 に答える 2

13

代わりにgit subtree ( alt link )を試してみてください。masterプロジェクトでリモートリポジトリとクリーンな(履歴に関連付けられていない)ブランチの両方を使用して、私はそれで多くの運がありました。

于 2009-10-20T20:25:52.283 に答える
6

git メーリング リストの最近のスレッドには、単一のコマンドで一貫したリポジトリの状態を取得する方法に関するパッチが含まれています。ブランチを変更するときは、基本的に git submodule update を呼び出します。

http://thread.gmane.org/gmane.comp.version-control.git/130155/focus=130330

于 2009-11-10T20:05:50.547 に答える