防止在 TFS 2017 分支上直接签入,仅允许合并

Posted

技术标签:

【中文标题】防止在 TFS 2017 分支上直接签入,仅允许合并【英文标题】:Prevent direct checkin on TFS 2017 branch, allow merge only 【发布时间】:2019-03-20 22:59:25 【问题描述】:

我想知道是否可以阻止用户使用 TFS 2017 直接签入分支,同时仍然允许对该分支进行合并签入。我知道这听起来很矛盾,如果你不能签入,你怎么能合并到那个分支?

无论如何,我们有一个典型的 dev-qa-prod 合并结构。我想允许用户直接在 dev 分支上签到。然后在 qa 和 prod 分支上,只允许发生合并签入。这是为了防止想要“绕过”我们的部署模型并直接将更改检查到 prod 分支的用户。 (这里不是讨论他们为什么要这样做的地方:-\)

如果有什么不清楚的地方,请告诉我,我会相应地更新问题。

谢谢。

【问题讨论】:

【参考方案1】:

不,这不可能。

要签入更改,您需要Check in 权限(设置为允许

因此您可以为用户/组设置权限以防止用户检查到特定分支,但同时也阻止合并检查。

但是,您可以使用签入策略强制执行Code Review,这可以防止直接签入 TFS 分支。 (在签入代码之前,您必须请团队中的其他人对其进行审核。)

您可以在客户端安装Colin's ALM Checkin Policies VS 2017。详情见Enable and Disable Check-In Policies:

启用签到政策:

    在团队菜单上,点击Project Settings,然后点击Source Control。 在源代码管理设置对话框中,点击签入策略标签。 在策略类型列表中,选择要启用的策略类型,然后单击启用。 点击确定

【讨论】:

感谢您的信息。我有点想我想做的事是不可能的。但是,代码审查至少会迫使其他人在签入之前查看代码。这至少会稍微缓解这个问题。谢谢! @Seth 欢迎您,如果答案有帮助,您可以Accept it as an Answer,这可能对阅读此主题的其他社区成员有所帮助。 没问题。昨天我试图弄清楚这一点,但没有意识到单击复选标记是“回答”问题的原因。 :)

以上是关于防止在 TFS 2017 分支上直接签入,仅允许合并的主要内容,如果未能解决你的问题,请参考以下文章

如何构建仅签入代码文件以及如何仅签入该构建的 tfs 中的代码工件?

TFS Online Git - CI基于特定文件夹签入

用于更新文件和签入 TFS 的 Azure DevOps 管道任务

Git-Tfs 在分支上缺少历史记录

TFS 2010:主分支的门控签到;在开发分支上滚动构建?

TFS 2015 - 签入特定标签