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 - 编程控制文件版本的更多相关文章

  1. Team Foundation API - 编程访问 WorkItem

    Team Foundation Server (TFS)工具的亮点之一是管理日常工作项, 工作项如Bug, Task,Task Case等. 使用TFS API编程访问TFS服务器中的工作项, 步骤如 ...

  2. ORA-00214: control file 控制文件版本不一致

    故障现象:今日学习oracle控制文件移动和修改,发现本机安装oracle数据库启动时只使用了一个控制文件.如下:SQL> select * from V$controlfile; STATUS ...

  3. Team Foundation 中的错误和事件消息

    Visual Studio Team System Team Foundation 中的错误和事件消息 Team Foundation 通过显示错误消息和事件消息来通知您操作成功以及操作失败.一部分错 ...

  4. Team Foundation Server 2013 with Update 3 Install LOG

    [Info   @10:14:58.155] ====================================================================[Info   @ ...

  5. 测试环境搭建心得 vs2008+SQL2008 PHP+APACHE+mysql Team Foundation Server2013

    大四即将结束,大学的最后一个假期,找到一份实习工作,担任测试工程师.在过年前的最后一周入职,干了一周的活儿.主要工作就是搭建测试环境. VMware 主要熟悉VMware软件,装系统基本都没什么问题. ...

  6. Oracle的控制文件

    一.控制文件 oracle的控制文件是极其重要的文件,它是一个较小的二进制文件. 记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等等  在参数文件中描述其位置, ...

  7. Oracle 控制文件(CONTROLFILE)

    一.Oracle 控制文件 为二进制文件,初始化大小由CREATE DATABASE指定,可以使用RMAN备份 记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等 ...

  8. Oracle 控制文件损坏解决方案

    Oracle 控制文件损坏解决方案 故障一:丢失(损坏)一个控制文件 前台报错:ORA-00205:error in identifying control file,check alert log ...

  9. 初探Team Foundation Server (TFS) 2015 REST API

    REST是一种简洁方便的Web服务,通过基于http协议的远程通信,可以为多种客户端程序提供远程服务,大幅提高了服务器系统的可扩展性. 微软宣布从Team Foundation Server 从201 ...

随机推荐

  1. 石子归并问题(nyoj737)

    石子合并(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述     有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的 ...

  2. Bag of mice(CodeForces 148D )

    D. Bag of mice time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  3. BZOJ1747 [Usaco2005 open]Expedition 探险

    首先我们可以发现如果错过了一个加油站,而继续往前走的时候没有油了,可以再假装之前经过加油站的时候加过油 于是我们维护一个大根堆,表示错过的加油站是哪些,每当没有油的时候从堆顶取出最大值加上去即可 /* ...

  4. SQL 调试:无法启动 T-SQL 调试。未能附加到 SQL Server 进程

    将 Windows 登录帐户添加为 sysadmin 已经具有 sysadmin 特权的用户必须执行以下命令: sp_addsrvrolemember 'Domain\Name', 'sysadmin ...

  5. BroadcastReceiver接收系统广播消息

    Android常用的广播Action常量: ACTION_TIME_CHANGED:系统时间被改变. ACTION_DATE_CHANGED:系统日期被改变. ACTION_TIMEZONE_CHAN ...

  6. 使用ASP.Net WebAPI构建REST服务(二)——路由

    REST并没有像传统的RPC服务那样显式指定了服务器函数的访问路径,而是将URL根据一定的规则映射为服务函数入口,这个规则就称之为路由.Asp.Net WebAPI的路由方式和Asp.Net MVC是 ...

  7. Windows任务计划

    任务计划,可以将任何脚本.程序或文档安排在某个时间运行.“任务计划”在每次启动windows系统的时候自动启动(默认Task Scheduler服务是开启的)并在后台运行.使用“任务计划”可以完成以下 ...

  8. asp.net mvc 2.o 中使用JQuery.uploadify

    From:http://www.cnblogs.com/strugglesMen/archive/2011/07/01/2095916.html 官方网站http://www.uploadify.co ...

  9. 【干货来了】2014年K2房地产IT分享峰会

    2014年K2房地产IT分享峰会已圆满落幕,嘉宾们纷纷出招,分享干货,现场妙语连珠不断,高潮迭起. 主题:流程驱动的地产业务管控平台 嘉宾:王寿欣(卓越地产战略与运营管理部 副总经理) 卓越地产应用K ...

  10. my class 2.0

    www.dropbox.com www.google.com/voice www.prezi.com www.evernote.com