是否可以阻止来自TFS中某个分支的“拉取请求”?

时间:2018-10-03 21:47:57

标签: git tfs

我在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个提交-c1c2c3

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相关联。两个拉取请求都与不同的工作项相关联。

真是一团糟。

可能的预防方法

  1. 在提交级别强制执行工作项关联。除了我们没有便捷的方法来执行它(服务器端钩子强制每个注释以{{1结尾) }},请参阅https://blog.ehn.nu/2015/10/10-features-in-team-foundation-server-that-you-maybe-didnt-know-about/中的第一个技巧,它不能解决Pull Request范围蠕变的问题。对于通过构建自动解决的“拉取请求”来说,这可能不是问题,但对于那些需要人工批准的请求而言。
  2. 更改默认行为,即“拉取请求”将不接受新的提交作为默认提交。并且,如果Pull Request中的提交不再在源分支中,则Pull Request将自动被放弃。 T,TFS不能提供这种灵活性,而且我们根本不知道如何做到这一点。
  3. 防止分支发出传出的请求。我们知道X是一个共享分支,即新的提交可能会从不同的贡献者那里随机到达那里,从而产生问题。如果没有办法从X打开“拉取请求”,那么我们就不会有这个问题。但是,如何从X合并到Y?在X上创建一个私有分支并将其合并(当然,通过“拉取请求”)。但是那个分支是私有的,所以没有问题。

在所有项目中,我觉得我们最幸运的是最后一项。

0 个答案:

没有答案