2011-12-05 15 views
1

私のプロジェクトのリポジトリを整理する方法を探しています。プロジェクトはクローズドソースですが、公開される単一のサブフォルダが含まれています。そのフォルダには、メインプロジェクトから呼び出される「プラグイン」が含まれています。これらのプラグインはすべてメインプロジェクトがあることを要求しますが、メインプロジェクトでは動作する必要はありません。独立したプラグインのサブモジュール

通常の方法は、プラグインのサブモジュールを使用することですが、私はこれがメインプロジェクトにとって何を意味するのかにはあまり喜んでいません。主な開発はプラグインとは完全に独立しているので、私はプラグインのサブモジュールの更新履歴を壊したくないので、実際にはプラグインをメイン(コア)プログラムの一部にしたくありません。

私はむしろ、メインプログラムがプラグインリポジトリのサブモジュールであるため、メインの開発がプラグインから完全に独立している逆の状況になります。問題は、私のプログラム構造がプラグインがメインディレクトリツリーの内側にあることを必要とするため、プラグインが正しくアクセスできるようにすることです。

サブモジュールが「大きな」リポジトリまたは「外部」リポジトリであるような状況には、標準的なアプローチがありますか?あるいはこれを解決する別のアイデアがありますか?

+0

再帰的なシンボリックリンクですか? – Cascabel

+0

私は歴史の混乱は問題ではないと思います。プラグインを個別に開発してから、リリースの直前にすべてのサブモジュールを更新して一度コミットすることができます。あなたの本当の願いは、メインプロジェクトにプラグインを気づかなければならないということですね。 – Cascabel

+0

実際にリリースされることはないので、問題はありません。主なプロジェクトはプラグインのランタイムのようなものなので、技術的には気づいていませんが、もちろんそれらのプラグインを使用することもできます。しかし、利用可能なプラグインのセットは、メインプロジェクトがメンテナンスアップデートを受け取るだけで、いつも変化しているものです。 – poke

答えて

1

の3つのオプション:

  1. は単純に手動でプラグインのレポの独立したクローンを行います。ランタイムリポジトリの.gitignoreファイルに "plugins"ディレクトリを追加し、プラグインリポジトリの場所とその複製方法を詳しく説明したREADMEにメモを入れてください。プラグインレポはいつでも簡単にcd plugins; git pullで更新できます。追加の手順を避けたい場合は、プラグインリポジトリを更新するためにローカルのメインgitリポジトリにポスト受信フックを追加することができますが、これはローカルリポジトリにのみ影響します。

  2. サブモジュールを使用してください。ランタイム環境に最新のプラグインを入手するには、プラグインサブモジュールの先頭を追跡するためにコミットする必要があります。例えば。 git add plugins; git commit -m "tracking latest plugins"。更新/展開は、git pull; git submodule update --init --recursive

  3. で行うことができます。私はこれがあなたが望むものだとは思わないが、Pro Gitで読むことができる。プラグインを更新するには、複数の手順が必要です。これは、運用中でも実行できない場合もあります。

自動化されたビルドシステムがあれば、私はサブモジュールと考えています。それ以外の場合は、メンテナンスは最小限に抑えられるので、1と一緒に行きます。

関連する問題