内置的TFS构建签入策略是不可配置的,它只是查看上一次构建是否失败,如果是,它将在Visual中显示策略警告。不幸的是,它认为“最后”构建是最后一个及时完成的构建,而不是最后一个用最新的变更集完成的构建。因此,即使事情被打破了,政策也有可能变得清晰。考虑一下这种情况:
Joe在Changeset 1234中提交了代码,它启动了构建“了不起的构建”,John在Changeset 1235中提交了代码,它也启动了构建“令人惊奇的构建”,但是更改集1235包含了一个中断。
因为我有多个构建代理,所以这两个构建同时运行。
现在,假设John的构建首先完成,并由于中断而失败--构建策略现在处于崩溃状态--警告您不能签入(如预期的那样)。
Joe的构建完成了第二步,并且成功了--此时的构建策略将恢复到一个清晰的状态,并且不会出现任何警告。(没有预料到,最后一个变化集仍然是坏的,需要修复)。
我知道TFS允许我通过编译实现'Microsoft.TeamFoundation.VersionControl.Client.PolicyBase'.的类来创建自己的自定义签入策略。不过,这里有一些问题:
你能给予的任何帮助都是很棒的。这个策略修复将解决我的大型开发小组中的许多头痛问题。
发布于 2016-09-01 09:29:49
本文介绍了一种简单、更好的方法,并将其应用于较高版本,注册密钥路径是根据VS (8.0,12.0等)的版本编写的。对于64位机器,路径喜欢HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio{VisualStudioVersion}\TeamFoundation\SourceControl\Checkin策略。
在您的自定义签入策略中,您可以通过TFS (评估方法)检查最新的构建结果。例如:
TeamFoundationServer tfs = new TeamFoundationServer("http://tfsserver:8080/tfs");
IBuildServer buildServer = (IBuildServer) tfs.GetService(typeof(IBuildServer));
IBuildDetailSpec buildDetailSpec = buildServer.CreateBuildDetailSpec("Team Project", "Build Definition Name");
buildDetailSpec.MaxBuildsPerDefinition = 1;
buildDetailSpec.QueryOrder = BuildQueryOrder.FinishTimeDescending;
IBuildQueryResult results = buildServer.QueryBuilds(buildDetailSpec);如果您只需要确保更改没有问题(构建可以成功),正如Daniel所说的,使用门控签入(TFVC)或使用分支策略(git)拉动请求。
https://stackoverflow.com/questions/39256852
复制相似问题