首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tf自动解决冲突合并

tf自动解决冲突合并
EN

Stack Overflow用户
提问于 2013-08-03 02:29:18
回答 2查看 3.2K关注 0票数 1

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

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

  • KeepYours -将撤销合并
  • TakeTheirs采用服务器版本
  • AutoMerge(被迫的)-不能解决冲突
  • OverwriteLocal -不能解决冲突
  • AcceptYours -在磁盘上获取版本,但更改类型从回滚,编辑到编辑

如何在不使用UI的情况下仅使用命令行tf工具再现手动合并?

下面是一个复制的例子:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2013-08-03 16:02:46

您可以将编辑的内容放在磁盘上,位于适当的位置,然后使用AcceptYours进行解析。

AcceptYours意味着获取内容,就像它们出现在磁盘上一样,而不是冲突源的内容。

票数 0
EN

Stack Overflow用户

发布于 2014-04-21 15:04:54

我还将研究/丢弃的(命令行)唯一选项。

http://teamfoundation.blogspot.com/2007/03/discarding-changes-in-merge.html

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

代码语言:javascript
复制
"tf.exe" merge /recursive /noprompt /discard /version:C1001~C1001 "$Source/" "$Destination/"

代码语言:javascript
复制
"tf.exe" merge /recursive /noprompt /discard "$Source/" "$Destination/"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18028672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档