TFS 2010阻止Stage分支的直接编辑(仅允许从Dev合并)

时间:2014-11-11 19:59:10

标签: visual-studio tfs merge

我有以下情况:

  • 我有一个开发和舞台分支
  • 将代码检入Dev,并在某些时候将这些来自Dev的更改集合并到Stage
  • 没有直接编辑/签到阶段(在开发合并之外)

我想要做的是识别/验证没有新代码直接引入阶段分支,而这些代码并非源自Dev中的变更集。

似乎无法保护Stage(从源代码管理的角度来看)只允许从dev中签入合并(因为在我合并之后所有操作看起来都是merge,edit),所以我我认为我能做的是创建一个TFS签入策略,试图将合并的更改与其源进行比较。

我创建了一个派生自PolicyBase并且已经覆盖Evaluate方法的类。在Evaluate方法中,我遍历this.PendingCheckin.PendingChanges.CheckedPendingChanges并检查.IsMerge属性和.ServerItem属性,以查看相关项是否为合并,并且发往我的Stage分支

但是,当我浏览每个更改时,我没有看到跟踪其谱系的方法或从它可能源自的位置访问父级(即:Dev分支版本#)。

我如何只允许合并,但我的舞台分支没有直接编辑?

1 个答案:

答案 0 :(得分:1)

在TFVC中实现此目的的唯一方法是让您获得所有合并的所有权。如果你进行合并,那么你就拥有了控制权。许多拥有这些严厉政策的组织会创建一个自动脚本来执行合并,并在发生冲突时拒绝。这样,在通过Web门户请求合并之前,开发人员被迫从Staging转到Dev并解决所有冲突。如果合并成功,则它由单个服务帐户在服务器上执行,并且编码器不需要任何类型的暂存权限。

然而,这是功能失调的。要么你不相信你的程序员,要么他们没有足够的能力在你的代码库中工作。

另一种方法可能是转移到TFS中的Git进行源代码控制。在Git中,合并是不可编辑的,并且作为单个操作执行,而不是在TFVC中进行合并/编辑。