Merge コマンド
更新 : 2007 年 11 月
merge コマンドは、ある分岐の変更を別の分岐に適用します。
メモ : |
---|
このコマンドの結果は、チェックイン操作を実行するまでは Team Foundation バージョン管理に反映されません。詳細については、「方法 : 保留中の変更をチェックインする」を参照してください。 |
必要なアクセス許可
merge コマンドを使用するには、マージ先を含むワークスペース フォルダの [チェックアウト] のアクセス許可が [許可] に設定されている必要があります。ソースを含むワークスペース フォルダの [読み取り] のアクセス許可も [許可] に設定されている必要があります。詳細については、「Team Foundation Server のアクセス許可」を参照してください。
tf merge [/recursive] [/force] [/candidate] [/discard]
[/version:versionspec] [/lock:none|checkin|checkout] [/preview]
[/baseless] [/nosummary] [/noimplicitbaseless] source destination
パラメータ
引数 |
説明 |
---|---|
versionspec |
/version オプションの値 (C2 など) を指定します。Team Foundation でバージョン指定を解析してそのスコープ内にある項目を確認する方法の詳細については、「コマンド ライン構文 (Team System)」を参照してください。 |
source |
マージ元のファイルまたはフォルダを指定します。 |
Destination |
マージ先のファイルまたはフォルダを指定します。 |
オプション |
説明 |
---|---|
/recursive |
source 項目の指定を、現在のディレクトリとそのサブフォルダに適用します。 |
/force |
マージ履歴を無視し、以前にマージされている変更も含めて、指定された変更すべてをマージ元からマージ先にマージします。 |
/candidate |
マージ先にマージされたことのない、マージ元内の変更セットの一覧を出力します。この一覧には、マージされたことのない変更セットの ID と、その変更セットに関するその他の基本情報が含まれます。 |
/discard |
実行済みのマージをトラッキングし、マージ履歴を更新します。マージ操作は実行しません。これにより、変更セットが特定のマージに対する使用から除外されます。 |
/version |
選択的マージでは、このオプションによって、マージ先にマージする範囲を指定します。キャッチアップ マージでは、このパラメータによって、そのバージョン以前のすべてのマージされていない変更をマージするように指定します。 選択的マージの場合、バージョン範囲はマージされる変更セットの開始点と終了点を表します。たとえば、バージョン 4 ~ 6 をマージすると、変更セット 4、5、および 6 がマージされます。 |
/lock |
ロックの種類を指定するか、項目からロックを削除します。詳細については、「ロックの種類について」を参照してください。 ロック オプション :
|
/preview |
マージのプレビューを表示します。 |
/baseless |
基本バージョンなしでマージを実行します。つまり、マージの関係がないファイルとフォルダをマージできます。ベースレス マージの後にはマージの関係が成立するため、それ以降のマージをベースレスにする必要はありません。 |
/nosummary |
エラーおよび警告のサマリが 10 行を超える場合には、これを出力しないようにします。 |
/noimplicitbaseless |
関連のない 2 つのバージョン管理ツリーに同じ相対名を持つ 2 つの項目が存在しても、Team Foundation がベースレス マージを暗黙的に実行しないように指定します。 |
/noprompt |
入力用のプロンプトを表示しません。 |
解説
tf コマンド ライン ユーティリティの merge コマンドを使用すると、既存のソース分岐の変更をターゲット分岐に適用できます。ターゲット分岐には、個々のリビジョンをマージすることも、変更セット全体をマージすることもできます。ソース分岐からターゲット分岐に変更をマージすることも、ターゲット分岐からソース分岐に変更をマージすることもできます。
また、merge コマンドを使用して、ターゲット分岐に移行されていない、ソース分岐内の変更を問い合わせることもできます。さらに、このコマンドでは、マージ元からマージ先に今後マージしないようにする特定の変更を指定できます。これにより、該当する変更はマージ操作の対象として表示されなくなります。
tf コマンド ライン ユーティリティの使い方の詳細については、「Tf コマンド ライン ユーティリティのコマンド」を参照してください。
ベースレス マージ
ベースレス マージを使用すると、相互に直接の分岐元でない項目をマージできます。ベースレス マージを実行するには、tfmerge コマンドを使用する必要があります。ベースレス マージを実行するとき、Team Foundation は分岐に含まれるファイルの関係について情報を何も持っていません。ベースレス マージでは、手動競合解決を実行する必要があります。ベースレス マージを実行して競合を解決すると、Team Foundation はマージ履歴を記録し、フォルダとファイルの関係を確立します。
tfmerge を実行するとき、それまで関連のあった 2 つのバージョン管理ツリーに同じ相対名を持つ項目が見つかると、Team Foundation によって暗黙のベースレス マージが実行されます。たとえば、関連した分岐の $SRC\ と $TGT をマージするとします。両方の分岐に a.txt という名前の関連のないファイルが含まれています。tf merge を実行すると、2 つの a.txt ファイルが同じもので、FIPS 準拠の暗号方式が無効になっていて、ソース ファイルがターゲット内の他のどのファイルにも関連していなければ、Team Foundation はこの 2 つのファイルの関係を確立します。
/noimplicitbaseless オプションを設定して tf merge を実行した場合、Team Foundation はこの 2 つの分岐をマージしようとしますが、変更をチェックインしようとすると 2 つの a.txt ファイルが名前空間の競合を引き起こします。競合を解決するには、どちらかのファイルの名前を変更する必要があります。
例
次の例は、MyFile_RTM にマージされたことのない変更を MyFile_beta1 からマージします。
c:\projects>tf merge MyFile_beta1 MyFile_RTM /recursive
次の例は、変更セット 137 の変更のみを branch2 にマージします。
c:\projects>tf merge /version:C137~C137 branch1 branch2 /recursive
次の例は、branch1 の最初の変更セットから変更セット 137 までのすべての変更セットをマージします。
c:\projects>tf merge /version:C137 branch1 branch2 /recursive
次の例は、変更セット 100 から変更セット 137 までのすべての変更をマージします。
c:\projects>tf merge /version:C100~137 branch1 branch2 /recursive
次の例は、branch2 にマージされたことのない、branch1 内の変更セットの一覧を出力します。
c:\projects>tf merge /candidate branch1 branch2 /recursive
次の例は、反対に branch1 にマージされたことのない、branch2 内の変更セットの一覧を出力します。
c:\projects>tf merge /candidate branch2 branch1 /recursive
次の例は、変更セット 137 を branch2 へのマージ対象から除外します。
c:\projects>tf merge /discard /version:C137 branch1 branch2 /recursive