1

ここで私が働いている場所には、進行中のバグとタスクをチェックインするためだけに使用されるブランチがあります。小さなタスクは棚上げされ、チェックインされた翌週に回収されます。

これらの小さなチェックインがすべて特定のプロジェクト ブランチにマージされる自動マージ システムを開発しました。その後、プロジェクトの最後にメイン ブランチに逆マージされ、別のプロジェクト ブランチに自動的に移動します。

しかし、Feature AのブランチとFeature Bの別のブランチがあるとします。機能 A + 機能 B + バグ修正の両方を備えた 3 番目が必要です。メインブランチを台無しにしたくないので、それらをリバースマージしたくありません(まだ)

Feature A からブランチを作成し、「Feature A」から「Feature A+B」への自動マージを有効にしました。したがって、すべてのバグ修正は次のようになります: Main -> Feature A -> Feature A+B。そして、機能 A 内のすべてのチェックインは機能 A+B に移動します。

今、私は"Feature B" から "Feature A+B" への根拠のないマージをしたいと思っています。

(TFS 内で) それらの間のマージを有効にする方法はありますか?

私はそれが階層を吹き飛ばすことを知っておりtf.exe、ファイルを手動で (または既知のツールを使用して) x baseless マージまたは 3 者間マージするだけで実行できることを知っています。

しかし、私はこれを行う責任はありません。チーム エクスプローラーのインターフェイスなどに慣れた別の開発者なので、彼の生活が楽になるでしょう。

さて、今、私はありそうな答え/コメントが次のようになることを知っています:

何かがおかしいので、ブランチ構造を再検討する必要があります!」

可能であれば、いくつかのヒントを入れてください。私は現在それを変更しようとしていますが、2つの別々のプロジェクトを開発しているときに、突然まとめる必要がある場合はどうすればよいかわかりません.

4

2 に答える 2

2

状況の評価は正しいです。ここでベースレスマージを使用して、機能Bと機能A+Bの関係を確立する必要があります。tbergstedtは、TFSが確立されると、ブランチ間のマージ関係を記憶するということは正しいです。つまり、このシナリオではベースレスマージを1回だけ実行する必要があり、その後、チームエクスプローラーの通常のマージUIが後続の変更を取得します。

これで、ベースレスマージを実際に実行する限り、Team Explorer 2012ベータクライアントがない限り、/baselessオプションを使用してtf.exeから実行する必要があります。Team Explorer 2012では、UIでベースレスマージを実行する機能が追加されました。持っていない場合は、最初のベースレスマージを実行してから、UIを使用して同僚に後続のマージを実行させることをお勧めします。

-Taylor、TFSバージョン管理開発リーダー。

于 2012-04-11T01:54:25.993 に答える
1

私が理解しているように、 を使用して 2 つのブランチ間でベースレス マージをtf merge /baseless実行すると、TFS はこの関係を記憶し、それ以降、任意のユーザーが 2 つのブランチ間で「通常どおり」マージを実行できます。

問題は、根拠のないマージがおそらくすべてのアイテムの競合を検出することであり、アイテムのブランチ間の関係を作成するには、すべての新しいバージョンをチェックインする必要があります。そのため、ブランチ構造を使用してFeatureBからFeature A+Bへのベースレス マージを行う場合、競合を解決する際には十分に注意する必要があります。単にターゲット バージョンを選択すると、ターゲット ブランチでの FeatureA の変更はすべてFeatureBで上書きされます

これを最後まで行っていないことを付け加えておきます。同様のシナリオがありましたが、すべての競合を詳細に解決する必要があることに気付いたときに救済されました. 私たちの製品は巨大なので、時間とリスクを費やす価値はありませんでした.

于 2012-04-10T14:54:49.033 に答える