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的时候有三个选项。分别是失败、替换、合并。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值