TFS二次开发-基线文件管理器(4)-标签的创建
上一节已经完成了源码文件的读取,如果要将已经选择的文件保存为一个标签(Lable)。在VS我们只能对一个目录做标签,非常的不方便。如果用下面的方法,将选择的文件路径保存为一个List在打标签,就非常的灵活了。
保存为List的方法很简单,需要递归将已经选择的书中的文件保存一下。
这里为了显示方便,我先将其存入一个Listbox中,
listBox1.Items.Clear(); for (int i = ; i < treeView1.Nodes.Count; i++) { TreeNode node = treeView1.Nodes[i]; SetTreeViewList(node); }
递归选取树中选择的节点并放入到Listbox中
public void SetTreeViewList(TreeNode nodes)
{
//防止节点没有子节点被忽略
if (nodes.Checked)
{
listBox1.Items.Add(nodes.Text);
}
//有子节点
foreach (TreeNode newNode in nodes.Nodes)
{
if (newNode.Nodes.Count > )
{
SetTreeViewList(newNode);
}
//判断孩子节点
else
{
if (newNode.Checked)
{
//显示路径及版本
listBox1.Items.Add(newNode.Text);
} }
} }
下面是将文件路径保存为标签。
//确定文件数
int FileNum = listBox1.Items.Count;
//这个path好似没用,不影响,所以写死了
string path = "$/test2-agile";
var versionControlLabel = new VersionControlLabel(version, "标签名称", version.AuthorizedUser, path, "标签注释");
//建立数组,每一个文件需要一个
var labelItemSpec = new LabelItemSpec[FileNum];
for (int i = ; i < FileNum; i++)
{
string FileURL = TFSCommon.GetFileURL(listBox1.Items[i].ToString());
//判断是否为文件,因为有可能选的是路径,所以写了一个判断是否为文件的方法
if (!TFSCommon.IsFile(FileURL))
{
MessageBox.Show("请选择文件");
return;
}
//RecursionType 设置递归类型
var itemSpec = new ItemSpec(FileURL, RecursionType.Full);
labelItemSpec[i] = new LabelItemSpec(itemSpec, VersionSpec.Latest, false);
}
//创建lable
//LabelChildOption其中三个选项,Fail = 失败, Replace = 替换, Merge = 合并
var lb = version.CreateLabel(versionControlLabel, labelItemSpec, LabelChildOption.Replace);
MessageBox.Show(lb[].Status.ToString());
这里可以看到,标签的名称和注释可以自己写,比较灵活。在保存Lable的时候有三个选项。分别是失败、替换、合并。
当遇到同名标签的时候,如果选择失败会提示。如果选择替换会将原有标签替换为这次保存的文件。如果是合并,会将两次的标签合并。
TFS二次开发-基线文件管理器(4)-标签的创建的更多相关文章
- TFS二次开发-基线文件管理器(5)-源码文件的读取
在上一节中,我们在保存标签之前,已经将勾选的文件路径保存到了Listbox中,这里只需要将保存的数据输出去为txt文档就可以做版本控制了. 版本文件比较复杂的是如何读取,也就是如何通过文件路径 ...
- TFS二次开发-基线文件管理器(1)-设计
CMMI在做基线文件管理的时候,常常是需要记录一部分基线文件的版本.并且这个基线文件记录也需要进行版本控制.TFS在做这件事的时候一般来说会选用标签(Lable)来做一系列文件的版本记录. 但是我发现 ...
- TFS二次开发-基线文件管理器(3)-源码文件的读取
TFS登录成功后,就可以开始读取源码目录树了. 一般来说,我不建议将整个树全部读取出来,因为这里不光存有项目文件,还有项目源码.如果全部读取出会是非常大的一棵树.因此我建议只读出根目录,每一次点击打开 ...
- TFS二次开发-基线文件管理器(2)-TFS登录
首先需要做一个TFS的登录. 以前的文章是使用的DomainProjectPicker 最新的VS里面使用的是TeamProjectPicker 首先可以在WinForm程序上写一个Button,然后 ...
- 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二次开发的第一 ...
随机推荐
- 出现蓝屏代码0x0000007b的原因及解决办法
出现蓝屏代码0x0000007b的原因通常是硬盘的存储控制器驱动加载错误,我们可以通过对BIOS界面进行修复来解决这个问题.下面小编将详细介绍解决蓝屏代码0x0000007b的方法,一起来看看吧 导致 ...
- 分别在.NET Framework 与 .NET Core 框架下 编写Windows Service(windows服务程序)
前言,为什么会分别在两个框架下编写Windows Service,是因为最近在做区块链这块,使用的是NEO(小蚁区块链)的相关技术,NEO使用的是.net core 2.1,业务上需要写两个程序,一个 ...
- shell脚本与mongo交互
1.mongo提供*.js的方法供linux调用 #!/bin/bash /usr/local/mongodb/bin/mongo hostname/dbname xxx.js xxx.js 内容如下 ...
- 转FTP协议详解
转自:http://www.cnblogs.com/li0803/archive/2010/11/16/1878833.html FTP 是File Transfer Protocol(文件传输协议) ...
- Atitit.js的键盘按键事件捆绑and事件调度
Atitit.js的键盘按键事件捆绑and事件调度 1. Best的方法还是 objEvtMap[ id+evt ]=function(evt,element) 2. Event bind funct ...
- printf不支持%lf
#include <stdio.h> int square137(int n); void p137() { double x = 3.0; int y = (int)x; printf( ...
- C++ Primer(第五版)读书笔记 & 习题解答 --- Chapter 2
Chapter 2.1 1. 数据类型决定了程序中数据和操作的意义. 2. C++定义了一套基本数据类型,其中包括算术类型和一个名为void的特殊类型.算术类型包含了字符.整型.布尔值以及浮点数.vo ...
- Windows Azure 系列-- Azure Redis Cache的配置和使用
假设还没有配置Azure Power shell 能够參照这里进行配置:http://blog.csdn.net/lan_liang/article/details/46850221 打开Azure ...
- windows下mysql区分大小写敏感问题
默认情况下,表别名在Unix上区分大小写,但在Windows或macOS上不是这样.以下语句在Unix上不起作用,因为它引用别名as a和as A: mysql> SELECT col_name ...
- Python 双向链表 快速排序
1.创建链表: from random import randint class DLinkedNode(object): def __init__(self, data=None, pre=None ...