题
已退出已用于我们构建丢弃位置的服务器。我知道如何更改当前构建定义以使用新服务器,但如何更改已经完成的构建的历史记录?我希望能够打开过去的构建,然后单击“打开删除文件夹”并被带到新服务器。我们将手动将旧版本复制到新服务器。
解决方案
以下样本似乎工作:
using System;
using System.Collections.Generic;
using Microsoft.TeamFoundation.Build.Client;
using Microsoft.TeamFoundation.Client;
namespace ChangeDropLocation
{
class Program
{
static void Main()
{
TfsTeamProjectCollection teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://MyServer:8080/tfs/Collection"));
var buildService = (IBuildServer)teamProjectCollection.GetService(typeof(IBuildServer));
IBuildDetail buildDetail = buildService.GetBuild(new Uri("vstfs:///Build/Build/1506"));
buildDetail.DropLocation ="\\somewhere";
var buildDetails = new List<IBuildDetail>();
buildDetails.Add(buildDetail);
buildService.SaveBuilds(buildDetails.ToArray());
}
}
}
.
您应该考虑的一件事是您可能缺少更新构建信息的特权。在我第一次尝试中,虽然我是一个项目管理员,但我得到了以下内容:
tf215106:访问被拒绝。Domain \ UserName需要更新构建 在团队中构建定义MyBuildDefinition的信息权限 项目MyTeamProject以执行该操作。想要查询更多的信息, 联系团队基础服务器管理员。
为了克服这一点,通过右键单击TeamExplorer“Builds”来设置右侧,然后选择“安全性...”。
其他提示
我不知道任何工具要这样做。也许有一个tfs powershell命令,但我认为你可以 - 采取适当的预防措施后,直接更新SQL数据库。
映射到丢弃位置的映射存储在TBL_BUILD中的集合SQL DB中。
从[tbl_build] 中选择[droplocation],[droplocationroot],[loglocation]
我不确定仓库是否存在任何影响。可能想先检查第一个。
我相信微软通常建议直接用于操纵SQL的东西。您可以使用TFS API,而是将是一种相对更安全的方法。
不隶属于 StackOverflow