上下文:一些开发人员在签入他们的代码之前没有维护正确的命名约定。因此,构建过程不会获取这些工件,因此在目标服务器上部署后依赖关系被破坏并导致失败。例如,包含 db 函数的文件GetMaxId()
应具有如下命名约定GetMaxId.Function.Ora.Sql
要求:是否可以为此实施任何签入策略,以便开发人员可以在签入之前通知问题。在该过程中,我们可以节省大量时间和精力。
是的,这可以使用将在 Visual Studio 中运行的 TFVC 签入策略实现。这是一个需要部署到每个客户端的自定义 dll。签入策略只是一段代码,当用户打开签入挂起的更改窗口时将运行该代码。
对于需要支持的每个 Visual Studio 版本,您都需要一个策略程序集。可以在此处找到正确的框架库集等。
您需要覆盖该Evaluate
方法来实现您的检查。您可以通过 访问选定的待定更改列表this.PendingCheckin.PendingChanges...
。以下是查看选定要签入的文件的策略示例:
public override PolicyFailure[] Evaluate()
{
if (PendingCheckin.PendingChanges.AffectedTeamProjectPaths.Length > 1)
{
return new[]{new PolicyFailure("Checking into multiple projects at the same time", this)};
}
var branches = this.PendingCheckin.PendingChanges.Workspace.VersionControlServer
.QueryRootBranchObjects(RecursionType.Full);
var groupedChanges = PendingCheckin.PendingChanges.CheckedPendingChanges.GroupBy(
change => branches.SingleOrDefault(branch => change.ServerItem.StartsWith(branch.Properties.RootItem.Item)));
if (groupedChanges.Count() > 1)
{
return new[]{new PolicyFailure("Checking into multiple branches at the same time", this)};
}
return new PolicyFailure[0];
}
您需要自己解析要与文件名匹配的文件,或者依靠另一个库来为您解析。Checkin 策略框架只允许您访问文件的路径。
如果您要解析文件,您可能需要一些缓存。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句