TFS二次开发-基线文件管理器(3)-源码文件的读取
TFS登录成功后,就可以开始读取源码目录树了。
一般来说,我不建议将整个树全部读取出来,因为这里不光存有项目文件,还有项目源码。如果全部读取出会是非常大的一棵树。因此我建议只读出根目录,每一次点击打开一级子目录。这样找到自己需要选取的文件即可。
上一节中,我们已经登录完成。
//获取选择的项目名称,这里是单项目,一次取pi[0]的名称 pi = tpp.SelectedProjects; ProjectURL = pi[].Name; VersionControlServer version = server.GetService(typeof(VersionControlServer)) as VersionControlServer; //此处获取项目第一级文件目录 ItemSet items = version.GetItems(@"$\" + ProjectURL, RecursionType.OneLevel);
接下来构建项目的第一级目录树。获取的item是一个包括父节点的目录,因此要去除后再添加
//先清空树
treeView1.Nodes.Clear();
//获取父节点
Item SubItem = items.Items[];
string MainSub = SubItem.ServerItem;
foreach (Item item in items.Items)
{
//去除父节点
if (MainSub == item.ServerItem)
{
}
else
{
TreeNode tnadd = new TreeNode(item.ServerItem);
tnadd.Name = item.ServerItem;
treeView1.Nodes.Add(item.ServerItem, item.ServerItem);
}
}
执行后的效果如下。项目下有两级目录。

接下来做树的点击事件。通过递归,向点击的节点添加子节点。
/// <summary>
/// 选择结点后的处理事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
if (e.Action != TreeViewAction.Unknown)
{
version = server.GetService(typeof(VersionControlServer)) as VersionControlServer;
ItemSet items = version.GetItems(e.Node.Text, RecursionType.OneLevel);
foreach (Item item in items.Items)
{
if (e.Node.Text == item.ServerItem)
{
}
else
{
//这里用name来存储changeset的版本ID,text存显示路径
e.Node.Nodes.Add(item.ServerItem, item.ServerItem, item.ChangesetId);
}
e.Node.Expand();
}
}
}
最终的效果如下。

TFS二次开发-基线文件管理器(3)-源码文件的读取的更多相关文章
- TFS二次开发-基线文件管理器(5)-源码文件的读取
在上一节中,我们在保存标签之前,已经将勾选的文件路径保存到了Listbox中,这里只需要将保存的数据输出去为txt文档就可以做版本控制了. 版本文件比较复杂的是如何读取,也就是如何通过文件路径 ...
- TFS二次开发-基线文件管理器(1)-设计
CMMI在做基线文件管理的时候,常常是需要记录一部分基线文件的版本.并且这个基线文件记录也需要进行版本控制.TFS在做这件事的时候一般来说会选用标签(Lable)来做一系列文件的版本记录. 但是我发现 ...
- TFS二次开发-基线文件管理器(2)-TFS登录
首先需要做一个TFS的登录. 以前的文章是使用的DomainProjectPicker 最新的VS里面使用的是TeamProjectPicker 首先可以在WinForm程序上写一个Button,然后 ...
- TFS二次开发-基线文件管理器(4)-标签的创建
上一节已经完成了源码文件的读取,如果要将已经选择的文件保存为一个标签(Lable).在VS我们只能对一个目录做标签,非常的不方便.如果用下面的方法,将选择的文件路径保存为一个List在打标签,就非常的 ...
- 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二次开发的第一 ...
随机推荐
- odoo报表条码无法显示解决
当服务器为Linux(Ubuntu)时,ODOO打印的报表上是有条码的,却显示空白框框. 问题在于服务器上没有安装条码的字体,reportlab渲染条码图形失败,导致显示不正常. 将附件中的字体下载, ...
- The user specified as a definer ('root'@'%') does not exist
通常是因为root用户对全局host无訪问权限.因此仅仅要给root用户加入一个訪问权限就可以. 解决的方法: 登陆mysql .运行 mysql -u root -pPasswd mysql ...
- mongoDB id 导出,dump,sed,count,mysql import等用法示例
#count collectiondb.news.count({"lpublishtime":{"$gte":1358697600000}}); #mongo导 ...
- Lucene3.0详解
http://www.open-open.com/lib/view/open1331275900374.html
- dbHelper类操作数据库
using System; using System.Collections; using System.Configuration; using System.Data; using System. ...
- http Referrer-Policy
Referrer-Policy: no-referrer Referrer-Policy: no-referrer-when-downgrade Referrer-Policy: origin Ref ...
- 硬件(MAC)地址的概念及作用
概念:MAC地址就是在媒体接入层上使用的地址,也叫物理地址.硬件地址或链路地址,其被固化在适配器的ROM中. 可见MAC地址实际上就是适配器地址或适配器标识符.当某台计算机使用某块适配器后,适配器上的 ...
- http协议---简述
http(Hypertext transfer protocol)超文本传输协议,通过浏览器和服务器进行数据交互,进行超文本(文本.图片.视频等)传输的规定. 也就是说,http协议规定了超文本传输所 ...
- linux查找yum和rpm安装路径
linux查找yum和rpm安装路径 转:https://jingyan.baidu.com/article/86112f1378bf282737978730.html
- 使用CSS3实现响应式标题全屏居中和站点前端性能
要实现标题全屏居中(同一时候在垂直和水平方向居中).有若干种方法,包含使用弹性布局.表格单元.绝对定位和自己主动外边距等. 全屏居中 当中眼下比較流行也比較easy理解的方法是使用绝对定位+偏移实现. ...