2

これと同様の質問すでに行われていますが、私がやろうとしていることとは正確には異なります.

最初は git サブモジュールが必要だと思っていました。次にスーパープロジェクトをセットアップし、次にサブツリーをマージしましたが、これらのいずれかが実際に適合するかどうかはわかりません。

プロジェクト(Eva)があり、オプションの拡張機能をいくつか書いています。したがって、Eva のコピーを Github から取得した場合、オプションのプラグインは含まれていませんが、個別に取得して使用することができます。

オプションの拡張子は、Eva と同じディレクトリ構造にあります。ここまでシンプル...

Eva
 |
 --- system/
 --- events/
   |
   --- core_events
 --- tests/
   |
   --- core_tests

Extension A
 |
 --- events/
   |
   --- [extension A]
 --- tests/
   |
   --- [extension A tests]

今夜、これらの拡張機能にテストを追加したいと思いました。現在、ローカルの Eva git リポジトリの外にある別のディレクトリにテストを置いています。これらのテストを実行するには、これらの拡張機能を Eva​​ と同じディレクトリに配置する必要があります。イベントの実行はコア システムに依存しています。

Eva
 |
 --- system/
 --- events/
   |
   --- core_events
   --- [extension A]
   --- [extension B]
 --- tests/
   |
   --- core_tests
   --- [extension A tests]
   --- [extension B tests]

Eva プロジェクト ファイルを拡張リポジトリ ディレクトリにコピーすることはできますが、Eva のソースを変更する場合は、それらの変更をコピーし続ける必要があります。

この不器用なセットアップを続行する必要がありますか、それとも git がこれに対応できるより適切な方法はありますか?

たぶん、私の要件は他の質問の逆です。私の拡張機能は Eva のサブ プロジェクトであり、時々 Eva リポジトリから更新を取り込む必要があります。

誰かが Eva のクローンを作成するときに拡張リポジトリをサブモジュールとして追加すると、オプションのプラグインもすべて取得されますか? 私はそれをしたくありません。

サブツリーのマージがどちらにも適合するかどうかはわかりませんが、拡張プロジェクトをコア Eva プロジェクトにプルする必要はありません。

4

3 に答える 3

3

最良の選択肢は、プロジェクトのレイアウトを変更して、各拡張機能がより自己完結型になるようにすることだと思います。IE は、たとえば /extensions の下の独自のディレクトリに存在します。

フレームワークの起動/テスト実行時に、そのディレクトリをスキャンし、拡張機能を動的にロードします。そうすれば、git の開発と操作が簡単になるだけでなく、さまざまなパッケージ オプションである IE tarball も簡単になります。これにより、ユーザーはどの拡張機能が使用されているかを簡単に確認できます。

また、サードパーティが選択した VCS を使用して「ツリー外」拡張機能を簡単に開発できるようにすることもできます。

于 2011-02-19T21:00:46.527 に答える
0

hour プロジェクトのルート ディレクトリに置かれ、それを plugin_manager と呼ぶ単純なシェル スクリプトについてはどうでしょうか。これにより、ユーザーはインストール済みのプラグインを一覧表示し、プロジェクトのサーバーで利用可能なプラグインを一覧表示し、新しいプラグインをダウンロードしてインストールできます。エンドユーザーにとっては、特に Git に詳しくない場合は、git サブモジュールを扱うよりも直感的かもしれません。

テストをダウンロードして実行することは、ユーザーが $ plugin-manager download foo-module を実行するときにスクリプトが実行する手順の 1 つにすぎない可能性があります。

パターンの良い例については、The Drush (Drupal shell) commandsのドキュメントを参照してください。

于 2011-02-10T00:06:55.343 に答える
0

これは、各コミット (またはプッシュ) がコアまたは拡張リポジトリ (個別に保持) のいずれかに設定され、両方の最新のコピーを含むリリース テスト ディレクトリが更新されるように設定された git フックを使用して達成できると思います。これに関するVonC の知識が不足しているため、たとえばマンページgit community book の第 5 章にリダイレクトすることしかできません。

実際、より簡単な解決策は、両方のリポジトリのソフトリンク コピーを使用してリリース テスト ディレクトリを設定することです ( cp -rs)。残念ながら、この場合、新しいファイルをいずれかのリポジトリに追加するたびに、新しいソフトリンクを追加することを覚えておく必要があります。

于 2011-02-18T10:54:29.537 に答える