1

マージ、ロールバック、解決などの際に表示される UI ダイアログを使用せずに、TFS シナリオの作成を自動化しようとしています。UI が表示され、ユーザーにファイルを編集してマージを受け入れる機会を与えたかのように、手動のマージを受け入れたいと思います。しかし、自動化する必要があり、UI はありません。

以下のコードでは、特定の編集をロールバックするための手動マージとして必要な最終コンテンツを含む「コピー」ファイルを作成します。予想通り、私は衝突します。すべての tf resolve /auto: オプションを試しましたが、競合を解決できないため、「コピー」ファイルのコンテンツは、ユーザーが競合を編集して手動マージを受け入れたかのように解釈されます。

  • KeepYours - マージを取り消します
  • TakeTheirs はサーバー バージョンを取得します
  • AutoMerge(Forced) - 競合を解決しません
  • OverwriteLocal - 競合を解決しない
  • AcceptYours - ディスク上のバージョンを取得しますが、変更タイプを rollback,edit から edit に変更します

UI を使用せずに、コマンド ライン tf ツールのみを使用して手動マージを再現するにはどうすればよいですか?

再現する例を次に示します。

SET WSPATH=C:\MyMappedWorkspacePath
SET F=%WSPATH%\%RANDOM%%RANDOM%
SET TF=%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\Common7\IDE\TF.exe
SET TMPFILE=%TEMP%\tf-resolve-test.txt

ECHO Hello > "%F%"
"%TF%" add "%F%"
"%TF%" checkin /comment:"add file" /noprompt "%F%" > %TMPFILE%
"%TF%" checkout "%F%"
ECHO // Change 1 >> "%F%"
COPY "%F%" "%F%-copy" > nul
"%TF%" checkin /comment:"edit 1" /noprompt "%F%" > %TMPFILE%
"%TF%" checkout "%F%"
ECHO // Change 2 >> "%F%"
"%TF%" checkin /comment:"edit 2" /noprompt "%F%" > %TMPFILE%
FOR /f %i IN ('PowerShell.exe -Command "select-string -Path %TMPFILE% -Pattern 'Changeset #(?<changeset>[0-9]*) .*' | %{$_.Matches} | %{$_.Groups['changeset']} | %{$_.Value}"') DO SET ROLLBACKCHANGESET=%i
"%TF%" checkout "%F%"
ECHO // Change 3 >> "%F%"
ECHO // Change 3 >> "%F%-copy"
"%TF%" checkin /comment:"edit 3" /noprompt "%F%" > %TMPFILE%
"%TF%" rollback /changeset:%ROLLBACKCHANGESET%~%ROLLBACKCHANGESET% "%F%" /keepmergehistory /noautoresolve /noprompt
"%TF%" resolve "%F%" /auto:DeleteConflict
DEL /F "%F%"
MOVE "%F%-copy" "%F%"
ATTRIB +R "%F%"
"%TF%" rollback /changeset:%ROLLBACKCHANGESET%~%ROLLBACKCHANGESET% "%F%" /keepmergehistory /noautoresolve /noprompt
"%TF%" resolve "%F%" /auto:AutoMergeForced /noprompt
4

2 に答える 2

0

編集した内容をディスク上の適切な場所に配置し、 で解決しAcceptYoursます。

AcceptYours競合のソースのコンテンツではなく、ディスクに表示されるとおりにコンテンツを取得することを意味します。

于 2013-08-03T16:02:46.870 に答える