如何在TFS 2010中更改历史版本的drop文件夹

时间:2012-03-09 15:46:24

标签: tfs2010

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

2 个答案:

答案 0 :(得分:4)

以下示例似乎有效:

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执行操作。欲获得更多信息,   联系Team Foundation Server管理员。

为了克服这个问题,右键单击TeamExplorer“Builds”&amp;然后选择“安全......”。

答案 1 :(得分:2)

我不知道有任何工具可以做到这一点。也许有一个TFS powershell命令,但我认为你可以 - 在采取正确的预防措施之后 - 直接更新SQL Db。

到放置位置的映射存储在tbl_Build中的集合SQL Db中。

从[tbl_Build]中选择[DropLocation],[DropLocationRoot],[LogLocation]

我不确定是否对仓库有任何影响。可能想先检查一下。

我认为微软通常建议不要直接操作SQL来做这样的事情。您可以使用TFS API,这将是一种相对更安全的方法。