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

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

保存为List的方法很简单,需要递归将已经选择的书中的文件保存一下。

这里为了显示方便,我先将其存入一个Listbox中,

listBox1.Items.Clear();

for (int i = 0; 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 > 0)
                {
                    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 = 0; 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[0].Status.ToString());

这里可以看到,标签的名称和注释可以自己写,比较灵活。在保存Lable的时候有三个选项。分别是失败、替换、合并。

当遇到同名标签的时候,如果选择失败会提示。如果选择替换会将原有标签替换为这次保存的文件。如果是合并,会将两次的标签合并。

时间: 2024-10-06 13:17:40

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

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

CMMI在做基线文件管理的时候,常常是需要记录一部分基线文件的版本.并且这个基线文件记录也需要进行版本控制.TFS在做这件事的时候一般来说会选用标签(Lable)来做一系列文件的版本记录. 但是我发现TFS并不能选取某几个文件进行版本记录(实际上是可以的,但是很麻烦,需要建立Lable后再修改). 于是,我们可以将项目文件以树形结构读出,然后选取需要做基线控制的几个文件.将其版本和路径保存到文件中,并且只为这几个文件建立Lable. 这个文件可以放入到TFS中做版本控制,今后也可以读出再做修改,

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

首先需要做一个TFS的登录. 以前的文章是使用的DomainProjectPicker 最新的VS里面使用的是TeamProjectPicker 首先可以在WinForm程序上写一个Button,然后写入如下代码 Uri tfsUri = new Uri("your TFS"); TfsTeamProjectCollection server = new TfsTeamProjectCollection(tfsUri); TeamProjectPicker tpp = new Team

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

TFS登录成功后,就可以开始读取源码目录树了. 一般来说,我不建议将整个树全部读取出来,因为这里不光存有项目文件,还有项目源码.如果全部读取出会是非常大的一棵树.因此我建议只读出根目录,每一次点击打开一级子目录.这样找到自己需要选取的文件即可. 上一节中,我们已经登录完成. //获取选择的项目名称,这里是单项目,一次取pi[0]的名称 pi = tpp.SelectedProjects; ProjectURL = pi[0].Name; VersionControlServer version

[deviceone开发]-基础文件管理器

一.简介 主要实现本地文件管理功能,主要功能为复制.粘贴.剪切目录或者文件. 二.效果 三.相关下载 https://github.com/do-project/code4do/tree/master/datafile_manager_demo 四.相关讨论 http://bbs.deviceone.net/forum.php?mod=viewthread&tid=851&highlight=%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86 五.更多案例 http:

Qt+QGIS二次开发:QGIS中使用QgsRubberBand类创建临时图形

1  概述 临时图形Rubberband主要用于高亮显示.交互绘制等情况下.2 原理 临时图形是在一个底色透明的图层(顶层)上,添加已有的几何元素或者创建一个几何元素(临时图形),可以设置相应的样式,并在图层的最上层叠加显示.3 使用方法 QgsRubberBand用于显示临时图形.可以显示点.线.面等所有类型.由于在交互绘制时,可能需要高亮显示节点,所以本类也可以设置不同的IconType来显示不同的节点样式(只能在点类型时起作用). 生成对象后可以完成操作所有的属性,如几何元素.样式等. s

免费的在线Web文件管理器:Net2FTP,Pydio,eXtplorer,KodExplorer–功能强大

https://www.freehao123.com/web-ftp/ 经常有朋友在使用一些没有带文件管理器的空间时,苦于没有办法来解压上传的文件压缩包,而如果不先上传压缩包,直接上传文件夹的话耗费的时间太多.还有一些朋友希望将空间变成一个文件存储站,这时就需要一个功能足够多也足够强大的在线文件管理器了. 在线的Web文件管理器非常地多,尤其是以PHP在线文件管理器最多,但是真正能够满足我们的文件管理需求同时也容易安装和使用的Web文件管理器不是很多.本篇文章部落就精选四个界面友好.功能丰富和安

介绍分享几款免费的在线Web文件管理器

经常有朋友在使用一些没有带文件管理器的空间时,苦于没有办法来解压上传的文件压缩包,而如果不先上传压缩包,直接上传文件夹的话耗费的时间太多.还有一些朋友希望将空间变成一个文件存储站,这时就需要一个功能足够多也足够强大的在线文件管理器了. 在线的Web文件管理器非常地多,尤其是以PHP在线文件管理器最多,但是真正能够满足我们的文件管理需求同时也容易安装和使用的Web文件管理器不是很多.本篇文章部落就精选四个界面友好.功能丰富和安装方便的Web文件管理器:net2ftp.Pydio.eXtplorer

UI进阶 文件管理器(NSFileManager)文件对接器(NSFileHandle)

一.文件管理器与文件连接器之间的区别 文件管理器(NSFileManager) 此类主要是对文件进行的操作(创建/删除/改名等)以及文件信息的获取. 文件连接器(NSFileHandle) 此类主要是对文件内容进行读取和写入操作. 二.文件管理器(NSFileManager) 1.创建文件夹管理器 1 NSFileManager *fileManager = [NSFileManager defaultManager]; 2.创建文件并写入数据 1 // 创建文件夹管理器 2 NSFileMan

PHP服务器文件管理器开发小结(总结):总结、索引和源代码

PHP服务器文件管理器的开发经过前一阶段的介绍基本完成了功能搭建,包括目录的检索.增加.删除.重命名,文件的增加.浏览.修改.重命名.移动,以及文件的上传和下载等功能.本文对前一阶段工作的相关博文进行索引,并提供源代码供有兴趣的同学一同讨论. PHP服务器文件管理器开发小结(一):功能规划 本节讨论了文件管理器的目标功能和运行环境. PHP服务器文件管理器开发小结(二):版面设计和css 本节讨论了页面布局所需的css内容,并介绍了引入jQuery和jQueryUI的方法. PHP服务器文件管理