在TeamCity上(我使用Enterprise 10.x,如果这是相关的),我有一个名为Automerge from Branch A to Branch B
的项目。该项目只有一个构建步骤,它运行执行此命令的PowerShell脚本(以及其他):
$tf checkin /comment:"Merging $changesetNumber from Branch A." /recursive /noprompt /bypass /override:"*** Merging from Branch A. ***"
(这个设置是我公司的源代码控制层次结构最近发生的变化所必需的。)
TeamCity上的构建失败,声称某些.cs
文件之间存在冲突。但是,当我比较文件时,它们之间绝对没有区别。例如:
在TFS中,Branch A
和Branch B
共享同一个父级,并且它们之间没有父子关系。
问题:
由于合并冲突的错误报告导致的构建失败对我们的工作流程具有很大的破坏性,并且执行手动合并非常低效。
修改
以下是Powershell脚本中的命令,该脚本在Branch B
的工作空间中执行:
Foreach ($changesetNumber in $changesetsToMerge) {
echo "*** Getting latest... ***"
& $tf get /noprompt
echo "*** Merging $changesetNumber... ***"
& $tf merge /baseless /version:$changesetNumber~$changesetNumber $/path/to/BranchA . /r /noprompt
$exitCode=$LastExitCode
if ($exitCode -ne 0) { exit $exitCode }
echo "*** Checking in $changesetNumber... ***"
& $tf checkin /comment:"Merging $changesetNumber from Branch A." /recursive /noprompt /bypass /override:"*** Merging from Branch A. ***"
$exitCode=$LastExitCode
if ($exitCode -ne 0) { exit $exitCode }
}
修改
我遵循了建议here并在执行无基本合并的命令后添加了以下行:
tf resolve /auto:acceptmerge
但是,由于以下错误,它无效:
[12:58:28]path\to\file.cs: The source and target both have changes.
如前所述,源版本与目标版本相同,如比较时所示。尽管如此,TFS仍会返回上述错误消息。