私のコードには2つの分岐があります。 B1
とB2
と言うことができます。コードの変更は両方のブランチで並行して発生し、B1
からB2
への定期的なマージ(すべてではなく、必要なもののみ)を行います。しかし、このマージは手動で(何らかの理由で)コードをあるブランチから別のブランチに貼り付けることによって行われます。今、必要なものがすべてB1
からB2
にマージされていることを確認したいと思います。 B2
ブランチのファイルには、B1
以外の変更が追加されている場合があります。私はtfs merge /candidates ...
コマンドを使用してファイル比較(diff
ツールを使用している可能性があります)を期待し、出力を出そうとしましたが、それは動作しません。 tfs merge
コマンドを使用した場合にのみ、マージが記録されます。ファイルが手動でマージされた場合、誤検出を取り除くことができる単純な解決法はありますか?TFSでマージ候補を見つける
答えて
discard mergeを実行できます。これはコマンドラインから行う必要があります。 Developer command promptを開き、いずれかのブランチの下にあるフォルダに移動します(該当するworkspacesに移動します)。次に入力します。これは、識別チェンジがかかります
tf merge /r /discard "$/Project/B1" "$/Project/B2" /v:C12345~C12345
(この場合は#12345チェンジだった)、およびターゲット・ブランチ(分岐B2)にマージされて、それを更新します。ターゲットファイルはチェックアウトされますが、変更はされません。チェックインするだけで操作を完了できます。その後、チェンジセットはマージ候補として表示されなくなります。同時にマージするチェンジセットの範囲を指定できますが、それらは連続している必要があります。
チェンジセットをマージ候補として表示することがあります。これはTFSの最新バージョンではまれであり、あなたの手をデータベースで非常に汚いものにしたい)。あなたがこれらのmaroonedチェンジセットの1つで終わるならば、それを無視してください。
TFSは、マージの競合をマージして解決するのに役立ちます。あなたが自動生成されたコード(マージ時に衝突を解決するのが難しい)が多い場合やバイナリファイルがある場合は、手作業で手動で「マージ」したい場合のみです。
これは私が今持っている最良の選択だと思います。 – Naveen
手動でソース管理の原則に反してある程度マージします。マージを達成するためにtfマージコマンドまたはソースコントロールマージウィザードを使用することを強くお勧めします。チェンジセットバージョン、日付バージョン、ラベルバージョン、さらにはワークスペースバージョンをマージすることができます。コマンドを使用した場合、すべてが非常に簡単になります。あなたが言及したような最も簡単な解決策は、tfs merge /candidates
を使用します。これは、送信先にまだマージされていないすべてのチェンジセットのリストを出力します。 Branch2に必要なものをすべてマージしたかどうかを確認するだけです。
手動でマージすることをお勧めする場合、偽陽性を除去する唯一の方法は、マージ後にファイル、フォルダまたは分岐を比較することです。 フォルダを比較するをVSで比較するか、この拡張子を使用してクイック比較(マウスを2回クリックするだけ)してくださいTFS Productivity Pack (Visual Studio 2015)
この状況には簡単な解決策はありません。あなたが必要なものだけをマージすると言った質問では、B1→B2のすべてをマージするのは大丈夫でしょうか?yesの場合は、上の読み:B2での追加変更が最小限である場合
は、最初のB2ブランチ(B1の一部ではない追加のコード)に変更されたファイルのリストを作成します。 B1から新しいブランチを作成し(B2_new)、上のリストから作成したようにB2_newブランチのファイルをチェックアウト/編集します。 (チェックインの際には、作業に矛盾があるかもしれません。)しかし、これは新しいベースラインを作成し、現在B1からB2_newにすべてがあることを知っています。 B2ブランチを破棄/ロックし、B2_newを先に使用します。
B2の変更がB2_newに移動するために多くの手動編集が必要な場合は、それを吸い込み、B1からB2へのマージを行います(フルブランチまたはあなたが必要とするフォルダ)。はい、これはすでに手動でマージしたファイルであっても、大量の競合を表示します。しかし、TFSでそのマージ関係を作成するには、それをやる必要があります。それは1つの大きな悪いマージになります。
個人的には、B2の変更が最小限であれば、私はオプション1を優先します。これは、よりクリーンで操作性に優れています。希望が役立ちます。
手動マージは、B2の一部のファイルを変更してソース管理でチェックするという意味ですか? VSからのtfs mergeコマンドもmergeオプションも使用していませんでした。 B2ブランチについて言及したので、B1からの追加の変更が含まれている可能性があります。 B1からB2までのすべての変更を手動でマージしましたか? –
@ Patrick-MSFT:はい、手動チェックアウトコピー貼り付けチェックイン。 – Naveen