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二次开发的第一 ...
随机推荐
- 【Python 数据分析】pandas模块
上一节,我们已经安装了numpy,基于numpy,我们继续来看下pandas pandas用于做数据分析与数据挖掘 pandas安装 使用命令 pip install pandas 出现上图表示安装成 ...
- 【Excle】文本日期转化为日期格式
现存在一列文本格式的日期 需要将该列转化为日期格式 方法一:使用分列 数据→分列,第三步选择[日期] 方法二:使用text函数 公式得到的结果为: 但是这样转化后的是文本型日期,需要转化为日期型得先转 ...
- poj 3592 Instantaneous Transference 【SCC +缩点 + SPFA】
Instantaneous Transference Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 6204 Accep ...
- Docker 方式运行 jenkins
原文地址:https://testerhome.com/topics/5798 简介说明 docker 是官方推荐的一种 jenkins 启动方式. 打开 jenkins 的官网,点击进入的是: ht ...
- MySQL中的RAND()函数使用详解(order by rand() 随机查询取前几条记录)
MySQL RAND()函数调用可以在0和1之间产生一个随机数: mysql> SELECT RAND( ), RAND( ), RAND( ); +------------------+--- ...
- in App Purchases一个注意事项
在completeTransaction中通过transaction.originalTransaction.payment.productIdentifier得到的productIdentifier ...
- js使用正则表达式验证身份证格式
function checkIdentity(identity){ var reg = /^[1-9]{1}[0-9]{14}$|^[1-9]{1}[0-9]{16}([0-9]|[xX])$/; i ...
- python语言 buffer类型数据的使用 'ascii' codec can't decode byte 0xe5 问题的解决
在python中我们使用buffer类型时可以将其转换为str类型. 如果obejct的类型为<type 'buffer'> ,可以使用str(object)将其转换为字符串类型. 在转换 ...
- c++ how to make your own class a valid key type for std::map?
In Java, if you want your own class to be a valid key type of the container, you just need to make i ...
- iOS开发常见错误(转)
//大全 //读取数据库数据 -(void)movethesqlitefile{ NSString *sourcepath=[[NSBundle mainBundle]pathForResource: ...