我们的服务器已用于我们的构建投放位置,现在正在退役。我知道如何将当前的构建定义更改为使用新的服务器,但是如何更改已完成构建的历史记录?我希望能够打开过去的版本并点击“Open Drop Folder”并被带到新的服务器。我们将手动将旧版本复制到新服务器。如何在TFS 2010中更改历史版本的投递文件夹
回答
下面的示例似乎工作:
,你应该考虑到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 needs更新内部版本 信息权限构建定义myBuildDefinition在团队 项目MyTeamProject中执行该操作。有关更多信息,请致电 联系Team Foundation Server管理员。
为了解决这个问题,请右键单击TeamExplorer“Builds”&,然后选择“Security ...”。
因此,这样做实际上更新了历史“已完成”版本中的放置位置?或者这只是批量更新当前的构建定义? – JohnZaj 2014-07-08 16:20:17
我不知道有任何工具可以做到这一点。也许有一个TFS powershell命令,但是我认为你可以 - 在采取正确的预防措施之后 - 直接更新SQL Db。
映射到放置位置存储在tbl_Build中的集合SQL Db中。
选择[DropLocation],[DropLocationRoot],[日志位置]从[tbl_Build]
我不知道是否有在仓库的任何影响,但。可能要先检查一下。
我相信微软一般建议不要直接操纵SQL这样的东西。你可以使用TFS API,这将是一个相对更安全的方法。
我希望避免修改数据库。我希望有一个工具。我总是可以像你提到的那样使用API。 – Bloodhound 2012-03-09 18:33:25
请不要碰(甚至SELECT查询)操作数据库。这完全不受支持,如果你开始搞乱数据库,TFS团队可以并且会拒绝支持。实际上有一种使用API来做到这一点的方法。我必须得到代码并在这里发布以支持的方式更新此代码。 – 2012-03-10 14:17:10
埃德,你有没有找到这个代码? – 2013-05-01 19:36:19
- 1. TFS旧版本TFS变更集历史
- 2. 如何查找TFS 2005历史中的文本更改?
- 3. 将TFS 2010历史记录导出到Excel或文本文件
- 4. tfs 2010 - 删除WorkItem历史
- 5. TFS 2010个别代码部分的更改历史记录
- 6. TFS获取最新版本历史
- 7. 文章版本/历史
- 8. 通过带有版本号的TFS重建历史版本
- 9. 如何在Subversion版本库历史记录中查找文件?
- 10. 在TFS 2010中更改代码语言并保留历史记录
- 11. 在TFS 2010中重命名文件夹
- 12. 如何更改git历史记录中的文件路径?
- 13. 如何让Git显示文件的版本历史
- 14. TFS高级文件历史查看器
- 15. 如何实现历史版本?
- 16. 如何以编程方式从TFS获取完整文件夹历史记录?
- 17. 在TFS 2010中将文件夹副本转换为分支
- 18. TFS历史遗失
- 19. 如何查看Visual Studio代码中的本地历史更改?
- 20. 将Surround SCM的源代码从历史版本迁移到TFS
- 21. 在svn中生成文件更改的历史记录
- 22. 在TFS 2010中自动发布版本
- 23. 在TFS中删除包含历史记录的文件
- 24. 使用visual studio 2010和tfs更改日志和版本控制
- 25. TFS 2010不再将更改集与版本相关
- 26. 如何在TFS中保存本地版本的文件?
- 27. 通过TFS重新部署历史版本
- 28. TFS合并历史版本自带了错误chageset
- 29. 使用SVN在文件中存储更改历史
- 30. 在TFS中标记版本历史的理想方式是什么?
整个服务器是否退役?或者是服务器徘徊在周围,但你不能再使用它来做滴?如果它是前者,则可以使用DNS/WINS别名将旧构建路由发送到新服务器。 – 2012-03-09 19:19:29
是的整个服务器正在退休。我们认为DNS/WINS别名是一个选项,但担心有人会忘记为什么该条目可能存在并稍后清除。 (不要问...) – Bloodhound 2012-03-10 01:52:17