2017-04-13 4 views
0

私はこのプロジェクトでどのアプローチを取っているのか苦労しており、コミュニティからいくつかのアドバイスを取ることに決めました。プラグインリポジトリを保持しているGitリポジトリ

私たちは、オープンソースフレームワークを開発しています。オープンソースフレームワークは、他の人が何らかのインターフェースを実装してその機能を使用できるようにします。このインタフェースを実装することで、他の人が基本的にこのフレームワークのプラグインを開発しています(少なくとも、それは私がどのように見ているのか、そしてこの質問の残りの部分で呼ぶでしょう)。

gitをフレームワークのバージョンコントロールとして使用します。 (最終的にGithubなどにアップロードされます)。 プロジェクトはCMakeを使ってビルドされています。

他の人に独自のプラグインを開発できるようにすることに加え、私たちはオープンソースとして提供したい独自の実装をいくつか持っています。これは、一般的な使い方を提供するためでも、チュートリアルの目的でも使用できます(インターフェースとその他の用途を実装する方法を示しています)。このようなプラグインの実際の開発をシミュレートするために、私たちのプラグイン(Plugin1と呼ぶ)は、フレームワークとは異なるgitリポジトリに実装されています。

フレームワークと私たちのプラグインの両方のコンパイルをサポートするために、フレームワークには "plugins"フォルダがあります。このフォルダには、インターフェイスの実装を提供するCMakeプロジェクトのフォルダが含まれています。私たちはCMakeを使用する以外のプロジェクトについては何も想定していません。 (ツリーにプラグインを追加する - プラグインフォルダを検索add_subdirectoryを()スクリプト経由で呼び出される)

をだから、基本的に、我々はこのようなものがあります:./plugins/下の各プラグインは異なるが

. (framework repository) 
├── CMakeLists.txt 
├── plugins 
│   ├── CMakeLists.txt 
│   ├── plugin1 
│   ├── plugin2 
│   ├── user_implemented_plugin_1 
│   └── other plugins... 
├── src 
├── tests 
└── etc... 

ですgitリポジトリ(独自のものとユーザー実装のものがあります)。 各プラグインをダウンロードするにはgit clone各レポ(もし私たちがチェックアウトする必要があるなら、特定のタグもあります)。

ユーザーはこの方法を使用することを期待していません(make installフレームワークまたはパッケージ経由でインストールする必要があります)が、開発にとって便利です。

この方法は、ビルドシステムで(プラグインreposをダウンロードする簡単なスクリプトを使用して)フレームワークをテストするのに役立ちます。 私が結局言ったように、これはオープンソースになり、私たちが開発したプラグインだけでなく、フレームワークもダウンロードしてほしいです。 ここでは、ユーザーがスクリプトを使用してリポジトリをダウンロードする必要があるか、手動で行う必要があるため、これがベスト・アプローチであるとは思わないため、ここでは不便に思うかもしれません。

私の質問は、実際にはアドバイスやフィードバックのためのものです。 私はこの種の開発にベストプラクティスなどをウェブで見ていましたが、何も見つかりませんでした。 Googleのリポジトリを使用するように勧められていた人もいますが、それは過度のようです。 いくつかのgitサブモジュールを使用することを提案しましたが、私の理解から、これは、親リポジトリが子リポジトリに依存し、私の場合が逆です。

このようなプロジェクトをルーキーミスでやっていますか? gitはこの種のツリーを管理するためのサポートをいくつか持っていますか?使用することをお勧めするツールはありますか?

+0

を使用することができ、これはプラグインで機能もフレームワークのために用意されていようになります。それはあなたの要件を満たしていますか? –

+0

いいえ、私はフレームワークがプラグインに依存する必要はありません。フレームワークに依存するプラグインが必要です – ZivS

答えて

0

フレームワークに依存するプラグインを作成する目的で、フレームワークリポジトリのコードをプラグインreposに追加することができます。あなたは、フレームワークのレポでmaster支店のコードは、プラグインのリポジトリに適用したいと仮定し、あなたが `Gitのsubmodule`について

git subtree add --prefix=user <URL for framework repo> master 
+0

このコマンドを使用してフォルダツリーを同じように保つにはどうすればよいですか? – ZivS

+0

'。/ plugins'フォルダにreposを追加するには' git clone'を使用しますが、 '。/ plugins'の各リポジトリに' git subtree add'を使うだけです。 –

+0

しかし、それは私に何を与えるだろうか?それは何をするためのものか? – ZivS

関連する問題