我有以下情况:
我想要做的是识别/验证没有新代码直接引入阶段分支,而这些代码并非源自Dev中的变更集。
似乎无法保护Stage(从源代码管理的角度来看)只允许从dev中签入合并(因为在我合并之后所有操作看起来都是merge,edit
),所以我我认为我能做的是创建一个TFS签入策略,试图将合并的更改与其源进行比较。
我创建了一个派生自PolicyBase
并且已经覆盖Evaluate
方法的类。在Evaluate
方法中,我遍历this.PendingCheckin.PendingChanges.CheckedPendingChanges
并检查.IsMerge
属性和.ServerItem
属性,以查看相关项是否为合并,并且发往我的Stage分支
但是,当我浏览每个更改时,我没有看到跟踪其谱系的方法或从它可能源自的位置访问父级(即:Dev分支版本#)。
我如何只允许合并,但我的舞台分支没有直接编辑?
答案 0 :(得分:1)
在TFVC中实现此目的的唯一方法是让您获得所有合并的所有权。如果你进行合并,那么你就拥有了控制权。许多拥有这些严厉政策的组织会创建一个自动脚本来执行合并,并在发生冲突时拒绝。这样,在通过Web门户请求合并之前,开发人员被迫从Staging转到Dev并解决所有冲突。如果合并成功,则它由单个服务帐户在服务器上执行,并且编码器不需要任何类型的暂存权限。
然而,这是功能失调的。要么你不相信你的程序员,要么他们没有足够的能力在你的代码库中工作。另一种方法可能是转移到TFS中的Git进行源代码控制。在Git中,合并是不可编辑的,并且作为单个操作执行,而不是在TFVC中进行合并/编辑。