私は、共通のベースプラグインから継承した複数のプラグインがあるプロジェクトに取り組んでいます。実際にgitを使用する方法を見つけようとしています。 [OK]をgitでコードバンドルを維持するための実用的な方法
Example Repo:
OfficePlugin [directory containing several .cs files and a .csproj]
CopyPlugin [directory with .cs files and .csproj. Class inherits from OfficePlugins]
CutPlugin [directory with .cs files and .csproj. Class inherits from OfficePlugins]
PastePlugin [directory with .cs files and .csproj. Class inherits from OfficePlugins]
FontPlugin [directory with .cs files and .csproj. Class inherits from OfficePlugins]
DecorationsPlugin [directory with .cs files and .csproj. Class inherits from OfficePlugins]
は、この例のように、我々は、この場合にはOfficePluginと呼ばれるベースのプロジェクトを持っています。 (C#プロジェクトを束ねいくつかのファイルが含まれているが、これは任意の言語のための質問である可能性があります。)
のは、私たちがプロジェクトに取り組んで3人のプログラマを持っているふりをしてみましょう。 (私が知っているから)1つのレポ内のすべてのこれらのファイルの通常のgitの設定の下で
Mark (Our I/O guy):
CopyPlugin
CutPlugin
PastePlugin
Nancy (Out Font manager):
FontPlugin
FontDecorationsPlugin
Joe (The cross department integrator):
FontDecorationsPlugin
PastePlugin
、私たちのプログラマは、彼らがコントロールしていないディレクトリを無視する必要があります。それは問題ありません。
しかし、のはジョーを使用すると、1つのドキュメントから別のテキストを貼り付けるとき、フォントスタイルが保存されたペーストの特殊なタイプを行う能力を追加したとしましょう。いくつかのコミットが続きます。
Commit Log
Commit: 12345 Author: Mark CopyPlugin Enhancements
Commit: 23456 Author: Nancy FontPlugin Speed Profiling
Commit: 34567 Author: Joe PastePlugin Font Decoration Ability
Commit: ABCDE Author: Mark Update of all I/O Plugins
この時点で、マークとジョーは、ジョーの変化が大きな変化であったことを認識しています。 PastePluginのディレクトリはABCDEをコミットするためにロールバックする必要がありますが、FontPluginとCopyPluginの変更は失われたくありません。
私は150のプラグインに近いことを除いて同様の状況があります。 150 repos(プラグインごとに1つ)は狂っているようだし、それぞれにOfficePluginのコピーが必要です。それは良いオプションかもしれませんが、追加または追加のリポジトリを削除するときに竹でないことを確認自動建物がうまくいくように
サブモジュールまたはSubRepoが見えます。
クレイジーブランチスキームとマージを行うことができますが、それは本当に苦しいと思います。別のオプションは、そのディレクトリ内のすべてのファイルを正確にコミットしてチェックアウトすることです。そのオプションは面倒です。特に、2つのコミットを行ってログを調べて、3か月前にどこにあったのか確認する必要がある場合は、そうです。
何らかの方法でタグ付けすることもできますか?しかし、私はそれが特定のディレクトリをチェックアウトするのと同じくらい難しいと思う。
この状況を処理する実際の方法はありますか?
IMO git submodulesは避けるべきです。それは私には分かりません。メインプロジェクトのサブモジュールを 'git pull'しても常に更新されるわけではありません。それぞれのプラグインを個別にパッケージ化し、特定のバージョンに依存する依存管理システムはありませんか? NuGetか何か? – AmazingDreams