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)-源码文件的读取的更多相关文章

  1. TFS二次开发-基线文件管理器(5)-源码文件的读取

      在上一节中,我们在保存标签之前,已经将勾选的文件路径保存到了Listbox中,这里只需要将保存的数据输出去为txt文档就可以做版本控制了.   版本文件比较复杂的是如何读取,也就是如何通过文件路径 ...

  2. TFS二次开发-基线文件管理器(1)-设计

    CMMI在做基线文件管理的时候,常常是需要记录一部分基线文件的版本.并且这个基线文件记录也需要进行版本控制.TFS在做这件事的时候一般来说会选用标签(Lable)来做一系列文件的版本记录. 但是我发现 ...

  3. TFS二次开发-基线文件管理器(2)-TFS登录

    首先需要做一个TFS的登录. 以前的文章是使用的DomainProjectPicker 最新的VS里面使用的是TeamProjectPicker 首先可以在WinForm程序上写一个Button,然后 ...

  4. TFS二次开发-基线文件管理器(4)-标签的创建

    上一节已经完成了源码文件的读取,如果要将已经选择的文件保存为一个标签(Lable).在VS我们只能对一个目录做标签,非常的不方便.如果用下面的方法,将选择的文件路径保存为一个List在打标签,就非常的 ...

  5. TFS二次开发系列:三、TFS二次开发的第一个实例

    首先我们需要认识TFS二次开发的两大获取服务对象的类. 他们分别为TfsConfigurationServer和TfsTeamProjectCollection,他们的不同点在于可以获取不同的TFS ...

  6. TFS二次开发、C#知识点、SQL知识总结目录

    TFS二次开发系列 TFS二次开发系列:一.TFS体系结构和概念 TFS二次开发系列:二.TFS的安装 TFS二次开发系列:三.TFS二次开发的第一个实例 TFS二次开发系列:四.TFS二次开发Wor ...

  7. TFS二次开发系列:七、TFS二次开发的数据统计以PBI、Bug、Sprint等为例(一)

    在TFS二次开发中,我们可能会根据某一些情况对各个项目的PBI.BUG等工作项进行统计.在本文中将大略讲解如果进行这些数据统计. 一:连接TFS服务器,并且得到之后需要使用到的类方法. /// < ...

  8. TFS二次开发的数据统计以PBI、Bug、Sprint等为例(一)

    TFS二次开发的数据统计以PBI.Bug.Sprint等为例(一) 在TFS二次开发中,我们可能会根据某一些情况对各个项目的PBI.BUG等工作项进行统计.在本文中将大略讲解如果进行这些数据统计. 一 ...

  9. TFS二次开发、C#知识点、SQL知识

    TFS二次开发.C#知识点.SQL知识总结目录   TFS二次开发系列 TFS二次开发系列:一.TFS体系结构和概念 TFS二次开发系列:二.TFS的安装 TFS二次开发系列:三.TFS二次开发的第一 ...

随机推荐

  1. JavaScript完整性检查

    1.7个“坑” <!DOCTYPE html> <html lang="zh"> <head> <meta charset="U ...

  2. AR路由器web界面每IP限速配置方法

    一.做下载方向的限速:在 QOS>接口限速,选择“新建”“接口名称”选择内网接口“限速类型”选择IP限速(目的)“方向”选择流出“起始/目的ip”写内网的ip“类型”选择独占“承诺速率”为限速的 ...

  3. Hibernate单向“多对一”关联

    1. 基于外键关联的单向“多对一”关联是最常见的单向关联其中指定many-to-one的unique="true",为单向“一对一”,不指定就是单向“多对一” <class  ...

  4. python使用单例模式创建MySQL链接

    代码: from functools import wraps import mysql.connector from sshtunnel import SSHTunnelForwarder def ...

  5. mock中测试private方法,不是mock

    Method method = PowerMockito.method(CategoryController.class, "getCategory",List.class);// ...

  6. bonjour的使用

    os中,bonjour是一个零配置的网络服务分发服务器与客户端.   在使用bonour之前你应该明白的是,bonjour并不负责数据传输,只负责发布服务与检索服务,并在客户端获取服务端的信息.   ...

  7. redis 底层数据结构 压缩列表 ziplist

    压缩列表是列表键和哈希键的底层实现之一.当一个列表键只包含少量列表项,并且每个列表项要么就是小整数,要么就是长度比较短的字符串,redis就会使用压缩列表来做列表键的底层实现 当一个哈希键只包含少量键 ...

  8. svn删除账户信息

    当我们需要清理eclipse中记录的SVN账号信息时,按如下操作: eclipse中打开window------>preferences------->SVN页面,如下所示: 一般情况下, ...

  9. TP3.2 引入微信类

    首先建立一个入口IndexController.php文件 <?php namespace Home\Controller; use Think\Controller; use Com\Wech ...

  10. 第一百八十三节,jQuery-UI,知问前端--验证插件

    jQuery-UI,知问前端--验证插件 学习要点: 1.使用 validate.js 插件 2.默认验证规则 3.validate()方法和选项 4.validate.js 其他功能 验证插件(va ...