已退出已用于我们构建丢弃位置的服务器。我知道如何更改当前构建定义以使用新服务器,但如何更改已经完成的构建的历史记录?我希望能够打开过去的构建,然后单击“打开删除文件夹”并被带到新服务器。我们将手动将旧版本复制到新服务器。

有帮助吗?

解决方案

以下样本似乎工作:

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,而是将是一种相对更安全的方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top