TFS二次开发06——签入(CheckIn)
一个Item 就是一个文件或文件夹
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.VersionControl.Client;
一:添加Item
//连接到TFS服务器
string tpcURL = "http://127.0.0.1:8080/tfs/";
TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri(tpcURL));
VersionControlServer version = tpc.GetService(typeof(VersionControlServer)) as VersionControlServer;
//创建工作区(Worksapce),如果已经存在就不创建
string worksapce = "WorkSpaceTest01";
Workspace ws;
Workspace[] wss = version.QueryWorkspaces(worksapce, Environment.UserName, Environment.MachineName);//查询工作区
if (wss.Length == )
{
ws = version.CreateWorkspace(worksapce);//创建工作区
}
else
{
ws = wss[];
}
string serverPath = "$/SYS/Application1/Application1.sln";
string localPath = "E:\\SYS\\Application1\\Application1.sln";
ws.Map(serverPath, localPath);//添加映射
int pend = ws.PendAdd(localPath);//告诉我你是要给“localPath” 做“Add” 操作。 pend==1 表示可以添加,pend==0 表示之前已经添加过了 或者 操作失败
ItemSpec[] itemSpecs = new ItemSpec[];
itemSpecs[] = new ItemSpec(localDir, RecursionType.Full);
WorkspaceCheckInParameters wscip = new WorkspaceCheckInParameters(itemSpecs, "注释内容");
int changeSetId = ws.CheckIn(wscip);//签入。如果签入失败changeSetId==-1;反之,返回变更集,大于0的整数
运行以上代码,效果如下图所示:

可以看出不但成功添加了Application1.sln 文件,并且在TFS上建立了相应的文件夹Application1 ,无需我们事先做“添加文件夹”的操作。
二 :删除、编辑、重命名等 Item
//删除Item
int pend = ws.PendDelete(localPath);
//编辑Item
int pend = ws.PendEdit(localPath);
//重命名
Int pend= ws.PendRename(oldPath,newPath);
ItemSpec[] itemSpecs = new ItemSpec[];
itemSpecs[] = new ItemSpec(localDir, RecursionType.Full);
WorkspaceCheckInParameters wscip = new WorkspaceCheckInParameters(itemSpecs, "注释内容");
int changeSetId = ws.CheckIn(wscip);//签入。如果签入失败changeSetId==-1;反之,返回变更集,大于0的整数
//执行CheckIn也可以:
PendingChange[] pcs = ws.GetPendingChanges();
int changeSetId= ws.CheckIn(pcs,"注释内容"); //类似的操作还有:
PendBranch(string sourcePath, string targetPath, VersionSpec version);//分支
PendUndelete(string path, int deletionId);//取消删除
三:NonFatalError
前面讲到
ws.PendAdd(localPath)
ws.PendDelete(localPath);
ws.PendEdit(localPath);
......
等等 都会 返回一个1或者0,1表示可以执行操作,0表示执行失败或者之前已经执行过该操作了。
那么如果返回0 ,我们想要知道到底为什么失败呢,
这里我们要使用VersionControlServer 的NonFatalError 事件:
version.NonFatalError += version_NonFatalError;
void version_NonFatalError(object sender, ExceptionEventArgs e)
{
if (e.Exception == null)
{
return;
}
string msg = e.Exception.Message;
msg += "\r\n";
msg += e.Exception.StackTrace;
MessageBox.Show(msg);
}
这样,如果因为其中发生了异常而返回0 ,就可以显示出异常信息。
四:撤销挂起的变更(Undo)
PendingChange[] pcs = ws.GetPendingChanges();
ws.Undo(pcs);//其有重载可以指定RecursionType(递归类型)和updateDisk 是否更新硬盘
TFS二次开发06——签入(CheckIn)的更多相关文章
- TFS二次开发系列索引
TFS二次开发11——标签(Label) TFS二次开发10——分组(Group)和成员(Member) TFS二次开发09——查看文件历史(QueryHistory) TFS二次开发08——分支(B ...
- TFS二次开发05——下载文件(DownloadFile)
前面介绍了怎样读取TFS上目录和文件的信息,怎么建立服务器和本地的映射(Mapping). 本节介绍怎样把TFS服务器上的文件下载到本地. 下载文件可以有两种方式: using Microsoft.T ...
- TFS二次开发-基线文件管理器(5)-源码文件的读取
在上一节中,我们在保存标签之前,已经将勾选的文件路径保存到了Listbox中,这里只需要将保存的数据输出去为txt文档就可以做版本控制了. 版本文件比较复杂的是如何读取,也就是如何通过文件路径 ...
- TFS二次开发系列:三、TFS二次开发的第一个实例
首先我们需要认识TFS二次开发的两大获取服务对象的类. 他们分别为TfsConfigurationServer和TfsTeamProjectCollection,他们的不同点在于可以获取不同的TFS ...
- TFS二次开发、C#知识点、SQL知识总结目录
TFS二次开发系列 TFS二次开发系列:一.TFS体系结构和概念 TFS二次开发系列:二.TFS的安装 TFS二次开发系列:三.TFS二次开发的第一个实例 TFS二次开发系列:四.TFS二次开发Wor ...
- TFS二次开发系列:七、TFS二次开发的数据统计以PBI、Bug、Sprint等为例(一)
在TFS二次开发中,我们可能会根据某一些情况对各个项目的PBI.BUG等工作项进行统计.在本文中将大略讲解如果进行这些数据统计. 一:连接TFS服务器,并且得到之后需要使用到的类方法. /// < ...
- TFS二次开发的数据统计以PBI、Bug、Sprint等为例(一)
TFS二次开发的数据统计以PBI.Bug.Sprint等为例(一) 在TFS二次开发中,我们可能会根据某一些情况对各个项目的PBI.BUG等工作项进行统计.在本文中将大略讲解如果进行这些数据统计. 一 ...
- TFS二次开发、C#知识点、SQL知识
TFS二次开发.C#知识点.SQL知识总结目录 TFS二次开发系列 TFS二次开发系列:一.TFS体系结构和概念 TFS二次开发系列:二.TFS的安装 TFS二次开发系列:三.TFS二次开发的第一 ...
- TFS二次开发02——连接TFS
在上一篇<TFS二次开发01——TeamProjectsPicher>介绍了 TeamProjectsPicher 对象,使用该对象可以很简单的实现连接TFS. 但是如果我们要实现自定义 ...
随机推荐
- Ckeditor的JS的加载和取值和赋值方法
Ckeditor 就是原来的Fckeditor. JS加载: $(function() { CKEDITOR.replace('FContent'); //FContent:这个对应文本域 }); J ...
- mysql中,什么是视图,视图的作用是什么?
需求描述: 在看mysql的视图,对于视图的定义,进行基本的了解,在此记录下. 概念解释: 视图:存储的查询语句,当调用的时候,产生结果集,视图充当的是虚拟表的角色. 测试过程: 说明: 如果要对一张 ...
- 如何使用 MasterPage
MasterPageFile母版页 刚开始学,什么都不懂,看到了这段代码,才促使自己去研究MasterPageFile到底是什么含义.<%@ Page Language="C#&quo ...
- MTK 锁屏配置
常常我们开 发程序的时候我们不需要系统唤醒系统锁屏功能,用户有时候在看电视或视频的时候不希望系统的锁屏 功能启动,既不想锁频,然而系统却在我们看电视或者视频的时候出来个锁屏的界面进行锁频拉,我们还要想 ...
- Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置
Spring整合quartz2.2.3总结,quartz动态定时任务,Quartz定时任务集群配置 >>>>>>>>>>>>&g ...
- Perl操作Oracle
一. perl连接Oracle数据库 [oracle@oracle11gR2 perl_script]$ more connect.pl #!/usr/bin/perl #perl script us ...
- Python 扩展知识
Python 练习题 Python 编程习惯 Python 转义字符 Python 格式化输出 Python 列表表达式 Python 生成器表达式 Python 序列化 Python2 与 Pyth ...
- CentOS7--Firewalld防火墙
Firewalld服务是红帽RHEL7系统中默认的防火墙管理工具,特点是拥有运行时配置与永久配置选项且能够支持动态更新以及"zone"的区域功能概念,使用图形化工具firewall ...
- java远程连接access数据库
本文转载自http://www.voidcn.com/article/p-tlrtkqlp-k.html 1 rmijdbc远程连接access数据库 正常情况下,常用的数据库sql server, ...
- 安装ahci驱动后出现A disk read error occurred如何解决
注意:因为一般的ghost系统盘都没有ahci驱动,所以,如果用到固态硬盘且想更好的发挥固态硬盘的性能,需要安装ahci驱动,且在bios 中把硬盘模式设置成ahci(否则电脑会蓝屏或进不去系统) 步 ...