2017-08-16 8 views
1

私はgit環境でホストされているプロジェクトを持っており、それに基づいてホワイトラベルプロジェクトを生成する必要があります。私は、MicrosoftのTFVC(Team Foundation Version Control)でもっと経験が豊富で、使い方を簡単に分かっていますが、gitを使ってどのように進めるべきかは不明です。ホワイトラベルプロジェクトで使用するGit戦略

TFVCでは、メインプロジェクトからブランチ 'A'を作成し、顧客固有のコンテンツを消去して完了しました。私はジェネリックバージョンを持っています。その後、私は子育てを削除し、 'A'から新しいブランチ 'B'を作成し、メインプロジェクトから 'B'にマージしてベースラインを実行するので、必要な階層が作成され、新しく作成されたブランチにはすべての顧客特定の変更。新しい顧客が到着すると、私は一般的な 'A'からブランチ 'C'を作成し、必要な新しい変更を適用します。

新しい機能がすべてのクライアントにとって十分に一般的で有用な場合、それは 'A'で開発され、 'B'、 'C​​'などにマージされます。これはすべてクライアントは異なる機能を要求し、単一のリポジトリを使用してそれらをオンとオフに切り替えることが許可されます。私の意見では、共通のものから生まれた異なるサンプルのコードを維持するよりはるかに悪いです。同じ機能は、異なるクライアントでも異なる動作をすることができます。実行時にアプリケーションでチェックする必要はありません。

シナリオを説明したら、Gitを使ってどのようにすればいいですか?また、gitを使ってブランチの代わりにフォークを使うこともできますか?

答えて

0

私が理解する限り、あなたは一般的に同じことを行うべきであり、少しばらつきがあります。

メインプロジェクトからブランチ 'A'を作成し、顧客固有のコンテンツを消去すると完了です。一般的なバージョンがあります。あなたは同じgitのその後

に私は、子育てを除去するであろう「A」から新しいブランチ「B」を作成し、baselesを行ってください

は「B」に、メインプロジェクトからマージ今私は私が必要とする階層構造を持っており、新たに作成された枝はすべての顧客の特定が含まれている代わりに、あなたは枝Bを開始し、(git revertのように)戻すことができ

を変えるあなたはcustomer-を削除するために、分岐Aに行われたすべての変更特定あなたが元々持っていたのと同じプロジェクトに戻りますが、手作業による紛争解決はありません。それが望ましい結果でしたか?

新しい顧客が到着すると、私は、一般的な1 'A' からの分岐 'C' を作成し、新しい場合

のgitで同じ

を必要な新しい変更を適用すべてのクライアントにとって十分に一般的で有用なものであれば、それは 'A'で開発され、 'B'、 'C​​'などにマージされます。

gitで同じ

+0

gitのブランチはライフサイクルが非常に短いため、生産環境では使用しないでください。これは、複数の顧客の場合にTFVCを使用する場合には当てはまりません。ブランチを無期限に使用することは悪い習慣と考えられますか? – v1n1akabozo

+0

あなたの決定にのみ依存します。一時的なブランチを作成して削除することもできますが、永続的にブランチを作成することもできます。早送りとしてのみ更新するのか、強制的に更新するのかを決定することもできます。前者の場合、不可逆的なので、そこに押しつぶすことについていくつかの規律を守らなければなりません。たとえば、間違って顧客固有のコンテンツをあなたの 'A 'にプッシュすると、あなたはそれを元に戻すか、前のポイントにリセットしてから、顧客のブランチにマージされます。 – max630

+0

これらのブランチは、[ここ](https://git-scm.com/book/en/v2/Git-Branching-Remote-Branches)で説明されているように、プライマリサーバのブランチを意味するものとします。そのサーバーでは直接操作するのではなく、ローカルのトラッキングブランチを使用して開発とマージを行いますが、おそらく同じ名前になりますが、その違いを理解することが重要です。 – max630

関連する問題