Tfs tf自动解决冲突合并

Tfs tf自动解决冲突合并,tfs,branching-and-merging,tf-cli,Tfs,Branching And Merging,Tf Cli,我试图在不使用合并、回滚、解析等过程中出现的UI对话框的情况下,自动创建TFS场景。我有一种情况,我既不想接受您的,也不想接受他们的。我想接受一个手动合并,就好像用户界面出现了一样,让用户有机会编辑文件并接受合并;但它必须是自动化的,没有用户界面 在下面的代码中,我创建了一个“复制”文件,其中包含我想要的作为特定编辑回滚的手动合并的最终内容。正如所料,我遇到了冲突。我已经尝试了所有tf resolve/auto:选项,但我无法解决冲突,因此我的“复制”文件中的内容被视为用户编辑了冲突并接受了手动

我试图在不使用合并、回滚、解析等过程中出现的UI对话框的情况下,自动创建TFS场景。我有一种情况,我既不想接受您的,也不想接受他们的。我想接受一个手动合并,就好像用户界面出现了一样,让用户有机会编辑文件并接受合并;但它必须是自动化的,没有用户界面

在下面的代码中,我创建了一个“复制”文件,其中包含我想要的作为特定编辑回滚的手动合并的最终内容。正如所料,我遇到了冲突。我已经尝试了所有tf resolve/auto:选项,但我无法解决冲突,因此我的“复制”文件中的内容被视为用户编辑了冲突并接受了手动合并

KeepYours-将撤消合并 takes获取服务器版本 AutoMergeForced-无法解决冲突 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

将已编辑的内容放在磁盘上的适当位置,然后使用AcceptYours解析


AcceptYours意味着获取磁盘上显示的内容,而不是冲突源的内容。

我还将研究仅命令行选项/discard

最好的方法是使用merge命令的discard选项。该选项仅通过命令行客户端tf.exe可用,基本上执行合并,而不从源到目标进行任何更改;它的唯一目的是更新源和目标之间的合并历史,从而防止将来出现被丢弃的变更集


我不确定您是否可以,除非您的意思是您正在寻找一个用户可以交互的命令行合并工具?在我签入edit 3后,在考虑您的响应后,我更改了脚本的使用顺序。我想,为什么要解析两次,只需在发出回滚之前将所需内容放入文件中。我这样做了,得到了一个冲突,正如你所说,我用/auto:AcceptYours解决。我得到以下信息:将C:\myfile解析为KeepYours,撤消回滚。没有什么可登记的。我遗漏了一些东西,因为接受你的东西是有意义的,但为什么它要撤消回滚?我的内容未被获取。如果在挂起更改之前将数据放入文件中,则还会发生另一个冲突。为什么要连续执行两次回滚?为什么要删除冲突?只需发出回滚,将正确的数据放在磁盘上,解决冲突并签入…?我通过编辑响应发送了另一个带有代码示例的回复,但它必须获得批准或类似的内容。无论如何,我删除了第一个回滚测试,并按照您所说的做了,tf以Resolved as Keepyurs响应;撤消回滚。然后,签入没有挂起的更改。也许有人会批准我的编辑很快,你可以看到代码。谢谢
"tf.exe" merge /recursive /noprompt /discard /version:C1001~C1001 "$Source/" "$Destination/"
"tf.exe" merge /recursive /noprompt /discard "$Source/" "$Destination/"