2012-04-26 4 views
1

私は最近gitを使い始めました。私は、アルゴリズムAを使用するプログラムとアルゴリズムBを使用するプログラムの2つの分岐を持っています。これらのアルゴリズムは、同じことを別々に行います。今、これらの2つのブランチのそれぞれについて、異なる種類のデータに対して実行する異なるプログラムのインスタンスを作成したい(これらは50までの異なるインスタンスにすることができます)。あなたが尋ねる前に、複雑さとパフォーマンスの問題のために、私はそれらをすべて同じプログラムに組み込むことができません。ちょっと違う使い方をした、同じプログラムのインスタンスのための独立したブランチまたは別のrepos

さらに可能であれば、コア(つまり、すべてのインスタンス間で共有されるソースの一部)とその変更で更新されるすべてのインスタンスを変更できます。

これを達成するにはどのような方法をお勧めしますか?

PS:私の質問はあまり明確ではないかもしれませんので、お気軽に追加情報をお尋ねください。

答えて

1

同じことをする場合は、共通のインターフェイス/ APIに準拠させるようにしてください。そうすることができれば、Bridgeパターンを適用してください。2つの実装は、異なるサブディレクトリに存在するだけです。実際にgitやブランチを管理する必要はありません.2つの異なる実装をBridgeの背後に置いて、実行時に正しいimplを選択します(またはコンパイル時のアプローチを好むようにコンパイル時に選択します)。

+0

ねえ、私はあなたの考えが好きです。私はC言語で書いています。さまざまなプログラム用に異なるヘッダーファイルを作成しました。私の唯一の懸念は、私はこれらのヘッダファイルにインライン化できるように関数定義を置かなければならないのでちょっと混乱しているようです。 – Grieverheart

+0

実際に何をしているのかわからなくても、私は1つのヘッダーファイルを作成し、達成しようとしている仕事に応じてリンクされる異なる.cファイルを持っています。これは、コンパイル時のブリッジ実装のためのものです。ランタイムブリッジの場合、実行時に切り替えられた実際の実装にコールを単に転送/委譲するだけの、汎用的なAPI実装が存在します。 –

+0

はい、それは私の計画でしたが、 'inline'では、関数が使用されているのと同じ翻訳単位で定義されている必要があるため、ヘッダファイルで関数を定義しなければなりません。もちろん、 'inline'命令が提供するパフォーマンスの改善があれば、まだ確認していません! – Grieverheart

0

コアブランチと他の2つのブランチをalgとalg Bにして、マスターをアルゴリズムブランチにマージすることができます。そうすることで、異なるアルゴリズムで同じコアを持つ2つの異なるプログラムを持つことができます。私は実際にあなたがインスタンスの意味を理解していません

関連する問題