問題
含まれているすべての外部ライブラリをソース管理に保存したいのですが、かなりの数のライブラリがあり、それらが大きいため、これらの外部ライブラリを単一のリポジトリ(個々のプロジェクトには含まれていません)に入れたいと思います。
先行技術
この質問は問題に対処しますが、誰も直接答えませんでした。(Gitリポジトリを整理するにはどうすればよいですか[より良いタイトルを高く評価します])
これは同様の状況をよく表していますが、サイコロはありません。(Web開発用のGit、サブリポジトリ、外部ライブラリ-最高の戦略は?)
これは間違いなく質問に答えますが、サブモジュールを使用します。(従来のn層設計で複数のプロジェクトを使用するGitリポジトリのベストプラクティス)
Git Slaveは素晴らしいサウンドですが、gitは新しいので、レパートリーに別のgitツールを追加したくありません。
これが私が今まで考えていることです。
my coding dir/
app1/
.git/
src/
com/
...
app2/
.git/
src/
com/
...
ext libs/
.git/
server crap/
apache tomcat 7.0.123/
...
apache cxf versionnumber/
...
util crap/
someones really great util lib-1.0/
...
そして、libディレクトリを指すconfigなどに$PATH変数があります。
より多くの考え
- 私たちにはインフラストラクチャエンジニアがいません。誰かがlibを追加または更新する必要があるたびに電話をかけたくないので、gitサブモジュールはひどいように見えるので避けたいと思います。将来的にはそれに移行できてうれしいですが、私たちはgitkoolaidから飲み物を始めたばかりです。
- また、サブモジュールを使用して、それが何であるかについての明確な説明と、この情報を同僚に渡すことができるように使用する方法についての明確なチュートリアルを誰かに教えてもらえれば幸いです。Gitを使い始めたばかりのときに、高度なトピックに関する2時間のドキュメントを全員に読ませたくありません。
- libリポジトリのバージョンをアプリケーションリポジトリのバージョンとリンクすると便利です。
繰り返しになりますが、私はサブモジュールに対する感情から話を聞くことができますが、私が見つけることができるチュートリアルが時代遅れである、および/または混乱しているという事実は大きな欠点です。これは、エンジニアにとって簡単なプロセスであり、元に戻すのも簡単である必要があります。私たちはgit忍者ではありません!
最後に、それが重要かどうかはわかりませんが、私たちはすべてUNIXを使用しており、常にJavaを使用しています。
前もって感謝します!
2012年3月1日更新
赤ちゃんのリーナス・トーバルズを泣かせようとしています。
私はかなりの量の調査を行ってきましたが、私の結論は、あなたがすでにgit ninjaである場合、サブモジュールは素晴らしいということです。そうは言っても、私は間違ったことをして、各gitプロジェクトにlibsディレクトリを作成します。なんで?それは簡単で、現在行っていることよりも大幅に改善されています。また、git知識のしきい値がはるかに低いことも前提としています。いつか私たち全員がgitの基本概念と中間概念(パッチ?履歴の書き換え?高度な分岐?)に固執すると、サブモジュールに移行する可能性があります。現状では、エンジニアに噛みすぎて失敗させたくありません。
うまくいけば、今から「正しい方法」に移行する準備ができたときまで、サブモジュールはそれほど重要ではなくなります。