Team Foundation API - 编程控制文件版本
Team Foundation Server (TFS)工具的亮点之一是文件的版本控制。在TFS中实现文件版本控制的类型:
Microsoft.TeamFoundation.Client.TfsTeamProjectCollection;
Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer;
Microsoft.TeamFoundation.VersionControl.Client.ItemSet;
Microsoft.TeamFoundation.VersionControl.Client.Workspace;
Microsoft.TeamFoundation.VersionControl.Client.GetStatus;
Microsoft.TeamFoundation.VersionControl.Client.PendingChange;
Microsoft.TeamFoundation.VersionControl.Client.Conflict;
1. 访问TFS服务器。
TfsTeamProjectCollection server = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("https://vstf-cooper.com:8080/tfs/learning"));
VersionControlServer controlServer = server.GetService<VersionControlServer>();
2. 获取服务器文件列表。
ItemSet set = controlServer.GetItems(@"$/tfs/path1", VersionSpec.Latest, RecursionType.OneLevel, DeletedState.NonDeleted, ItemType.Folder);
foreach (var item in set.Items)
{
string file = item.ServerItem;
}
3. 创建工作区,建立本地映射。工作区文件的影射可以到非常小的子集,如服务器有很多文件夹结点,用户只想更新一个文件夹下文件,则可以直接映射到待更新文件的父文件夹。
Workspace tfsWSpace = controlServer.CreateWorkspace("MyWorkSpace", @"cooper");
tfsWSpace.Map(@"$/tfs/", @"c:\myTFS");
4. 检测服务器文件是否存在。
bool isSourceExist = controlServer.ServerItemExists("$/tfs/path1", ItemType.Folder);
5. 删除服务器上某路径下的文件。
// check if destination folder exist, if yes, delete existing folder first
bool isFolderExist = controlServer.ServerItemExists("$/tfs/path1", ItemType.Folder);
if (isFolderExist)
{
// download server files to local
GetStatus status = tfsWSpace.Get(new string[] { "$/tfs/path1"}, VersionSpec.Latest, RecursionType.Full, GetOptions.Overwrite); // delete server files, deleting requires the files exist in local first
int toDelete = tfsWSpace.PendDelete(item.TargetPath, RecursionType.Full);
if (toDelete > )
{
// get pending items in current work space
PendingChange[] pendings = tfsWSpace.GetPendingChanges();
if (pendings.Length > )
{
Conflict[] conflicts = tfsWSpace.QueryConflicts(new string[] { "$/tfs/path1" }, true);
foreach (Conflict conflict in conflicts)
{
conflict.Resolution = Resolution.AcceptMerge;
tfsWSpace.ResolveConflict(conflict);
} // checkin pending changes, return the changeset number as int32
int changeSetNumber = tfsWSpace.CheckIn(tfsWSpace.GetPendingChanges(), "Tool:Delete existing folder and preparing for branch");
}
}
}
6. 添加新文件。首先确保本地文件存在。
// add local files to server, return the total number added
int totalAddFolders = tfsWSpace.PendAdd(@"c:\myTFS\path1\newFolder");
tfsWSpace.CheckIn(tfsWSpace.GetPendingChanges(), "Tool:Add Folder");
7. 分支文件。分支文件,若是文件夹到文件夹,则目标文件夹必须不存在,其父文件夹必须存在。
//Branch items from Developement to Publication
int changeSetID = controlServer.CreateBranch("$/tfs/path1/original", "$/tfs/path1/target", VersionSpec.Latest);
Changeset changeSet = controlServer.GetChangeset(changeSetID);
changeSet.Comment = "Tool:Branch from original to target.";
changeSet.Update();
Team Foundation API - 编程控制文件版本的更多相关文章
- Team Foundation API - 编程访问 WorkItem
Team Foundation Server (TFS)工具的亮点之一是管理日常工作项, 工作项如Bug, Task,Task Case等. 使用TFS API编程访问TFS服务器中的工作项, 步骤如 ...
- ORA-00214: control file 控制文件版本不一致
故障现象:今日学习oracle控制文件移动和修改,发现本机安装oracle数据库启动时只使用了一个控制文件.如下:SQL> select * from V$controlfile; STATUS ...
- Team Foundation 中的错误和事件消息
Visual Studio Team System Team Foundation 中的错误和事件消息 Team Foundation 通过显示错误消息和事件消息来通知您操作成功以及操作失败.一部分错 ...
- Team Foundation Server 2013 with Update 3 Install LOG
[Info @10:14:58.155] ====================================================================[Info @ ...
- 测试环境搭建心得 vs2008+SQL2008 PHP+APACHE+mysql Team Foundation Server2013
大四即将结束,大学的最后一个假期,找到一份实习工作,担任测试工程师.在过年前的最后一周入职,干了一周的活儿.主要工作就是搭建测试环境. VMware 主要熟悉VMware软件,装系统基本都没什么问题. ...
- Oracle的控制文件
一.控制文件 oracle的控制文件是极其重要的文件,它是一个较小的二进制文件. 记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等等 在参数文件中描述其位置, ...
- Oracle 控制文件(CONTROLFILE)
一.Oracle 控制文件 为二进制文件,初始化大小由CREATE DATABASE指定,可以使用RMAN备份 记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等 ...
- Oracle 控制文件损坏解决方案
Oracle 控制文件损坏解决方案 故障一:丢失(损坏)一个控制文件 前台报错:ORA-00205:error in identifying control file,check alert log ...
- 初探Team Foundation Server (TFS) 2015 REST API
REST是一种简洁方便的Web服务,通过基于http协议的远程通信,可以为多种客户端程序提供远程服务,大幅提高了服务器系统的可扩展性. 微软宣布从Team Foundation Server 从201 ...
随机推荐
- this和super关键字
this关键字: 1.引用成员变量 2.通过this(参数列表)调用类的重载的构造方法 3.返回对象的值:使用return this,来返回某个类的引用. super关键字: 1.super是一个引用 ...
- 解决extjs grid 不随窗口大小自适应的问题
解决extjs grid 不随窗口大小自适应的问题 August 30, 2010 zhai Javascript 8,403 viewsGo to comment 最近遇到的问题,在使用grid的时 ...
- C#伪静态实现的方法
在asp.net开发网站的时候,我们经常会用到伪静态,好处是可以隐藏真实的路径,提高网站的安全性,在官网等展示网站希望对搜索引擎友好,提高搜索排名:或者在涉及到模板开发都会用到伪静态.下面讲解下平时用 ...
- ruby学习网站
Ruby官方中文网(推荐): https://www.ruby-lang.org/zh_cn/ 国内非常不错的Ruby学习教程网站(推荐): http://www.yiibai.com/ruby Ru ...
- treap 1296 营业额统计
有一个点答案错误,求大神指教 #include<cstdio>#include<iostream>#include<cstdlib>#include<ctim ...
- Oracle 11g 安装
1.Oracle 11g安装: http://www.cnblogs.com/qianyaoyuan/archive/2013/05/05/3060471.html 2.安装完Oracle数据库,给s ...
- 五大要求让BPM与企业对接
BPM(即业务流程管理)在中国已经有多年的发展历史,但人们经常提到的还是企业对流程的迫切需要,鲜有人讨论什么样的企业才能实施BPM,或者换句话说BPM的本身对企业有什么要求.不是所有的工作都适合BPM ...
- android 获取activity 的name
String contextString = this.toString();String name = contextString.substring(contextString.lastIndex ...
- 框架之 spring
spring有两大特性,其一为ioc,其二为aop 1.ioc的理解 ioc为依赖注入,他的好处就是把创建对象的权利交给spring去管理,这样的好处是 将应用程序中的对象解耦,传统的方式程序中的对象 ...
- MySQL数据库远程连接
12.00 MySQL数据库远程连接 参考: http://www.jb51.net/article/24508.htm http://www.linuxdiyf.com/viewarticle.ph ...