我在TFS中有一个共享分支(即很多人都推送到它)。我要防止人们打开从该共享分支到任何其他分支的拉取请求。
我对服务器端拥有完全控制权。例如,我可以添加服务器端挂钩或安装服务器端扩展。
动机
给出#1
在TFS中,我们将工作项与提交相关联。但是,我们不知道如何强制将各个提交与工作项相关联。我们确实知道如何通过分支策略对“拉取请求”执行该操作。
因此,我们不会要求开发人员仅将工作项与提交相关联,而仅与请求请求相关联。
给出#2
在TFS中,如果某个分支有未完成的Pull Request,则任何推到该分支或通过另一个Pull Request拖入该分支的新提交都会自动添加到未完成的Pull Request中。参见Prevent TFS from adding new commits to open pull request?
结果
假设X是一个分支,其中未完成将请求PR1拉到分支Y上,该分支承载3个提交-c1
,c2
和c3
。
X --[PR1=<c1,c2,c3>]--> Y
如果新的提交c4
通过另一个“拉取请求”(例如PR2)被拉入X
--[PR2=<c4>]--> X
然后c4
自动添加到PR1:
X --[PR1=<c1,c2,c3,c4>]--> Y
这意味着,当PR1完成时,c4
将与PR1的工作项相关联。那么,我们有什么?在分支X中,该提交与PR2相关联,但在分支Y中-与PR1相关联。两个拉取请求都与不同的工作项相关联。
真是一团糟。
可能的预防方法
在所有项目中,我觉得我们最幸运的是最后一项。