如何在 TFS 中调试 "Pull request cannot be automatically merged."?

How to debug "Pull request cannot be automatically merged." in TFS?

我们使用 TFS 2017 (15.117.26714.0) 和 git。 当我们尝试发出拉取请求时,TFS 显示 "Pull request cannot be automatically merged.".

我只是想弄清楚发生了什么,但我没有找到任何关于为什么无法自动合并拉取请求的消息。

你知道如何调试"Pull request cannot be automatically merged."吗? 是否有隐藏选项或日志的 link 可以帮助我?

更新

您可以在 Web 服务器的专用页面上找到关于应该在拉取请求期间执行合并的作业的小报告。您可以在 http://my.tfs.server:8080/tfs/_oi or https://my.tfs.server/_oi 中找到它,然后搜索名为 Git Native MergeJob 的工作。您必须具有管理权限才能访问它。

这为该作业提供了一条结果消息,如果作业失败,它可能是调用堆栈的异常。

然而,在我的具体情况下,作业成功执行并且结果消息为 Successfully tried merging. 而来自拉取请求的消息仍然是 Pull request cannot be automatically merged.

所以,我需要更深入地挖掘并找到该特定工作的日志(如果存在的话!)。 有人知道我在哪里可以找到它吗?

说明你没有最新的master。

你应该拉取最新的 master,将其合并到你的功能分支中修复所有冲突,然后执行你的拉取请求。

Git在大多数情况下非常擅长自动合并文件更改,大多数拉取请求可以“自动合并”,这意味着它与目标分支。

但是,如果其他人更改了与您相同的文件之一,TFS 将不再尝试合并您的分支。如果 TFS 无法提供有关如何更正此问题的建议。您可能会收到此类错误信息 "Pull request cannot be automatically merged."

您可以通过将两个服务器分支下拉到本地并相互比较来仔细检查。如果有冲突,建议你看看resolve merge conflicts

一些类似问题供大家参考:


此外,为了避免此类问题,您可以set up the branch policy保护您的分支。设置分支策略后,其他人无法直接将更改推送到该分支。对分支的更改只能通过拉取请求进行。

您可以在 Web 服务器的专用页面上找到关于应该在拉取请求期间执行合并的作业的小报告。您可以在 http://my.tfs.server:8080/tfs/_oihttps://my.tfs.server/_oi 中找到它,然后搜索名为 Git Native MergeJob 的工作。您必须具有管理权限才能访问它。

根据问题所在,您可能会遇到异常和调用堆栈,这有助于理解 "Pull request cannot be automatically merged".

的原因

大多数时候,您会发现文件 "too big" 由 TFS 处理,请参阅 this issue on github