我正在尝试在不使用合并、回滚、解析等过程中出现的 UI 对话框的情况下自动创建 TFS 场景。我有一个案例,我既不想 AcceptYours 也不想 AcceptTheirs。我想接受手动合并,就好像 UI 出现并让用户有机会编辑文件并接受合并一样;但它必须是自动化的,没有用户界面。
在下面的代码中,我创建了一个“副本”文件,其中包含我想要的最终内容,作为回滚特定编辑的手动合并。正如预期的那样,我遇到了冲突。我已经尝试了所有 tf resolve /auto: 选项,但我无法解决冲突,因此我的“复制”文件中的内容被视为用户编辑了冲突并接受了手动合并。
- KeepYours - 将撤消合并
- TakeTheirs 取服务器版本
- AutoMerge(Forced) - 不能解决冲突
- OverwriteLocal - 不能解决冲突
- AcceptYours - 获取磁盘上的版本,但将更改类型从回滚更改为编辑
如何在不使用 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