私のプロジェクトでは、いくつかの 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
が悪いのでしょうか?ワークフローに関する適切なチュートリアルはありますか?
適切な答えがわからなくても声を上げてください。私の懸念を共有してください。:-)