.net解决方案,以获取与TFS中的更改集关联的文件

时间:2015-01-07 16:43:15

标签: .net tfs changeset

我有一个.net解决方案,用于将一组更改集添加到配置文件[values.xml]中指定的TFS本地工作空间中。将与更改集关联的文件下载到与工作区关联的本地工作文件夹后,我有一个单独的打包脚本,可以从这些文件中创建msi。 .net解决方案工作正常,但通常。问题出现在以下情况下:

假设我有一个变更集:C717171与我在web.config文件中所做的更改相关联。 配置文件[values.xml]在其中列出了此变更集,这意味着.net解决方案必须将此特定变更集置于TFS本地工作空间中,之后将单独的打包脚本接管。

实际发生的是,.net解决方案将存储库中的所有web.config文件与所需的文件放在一起。

        var changesets = vcs.QueryHistory(repository, VersionSpec.Latest, 0, RecursionType.Full, null, versionFrom, versionTo, Int32.MaxValue, true, false).Cast<Changeset>();
            Workspace myworkspace = vcs.CreateWorkspace(workspaceName, tfsUser);
            var workingFolder = new WorkingFolder(repository, workspacePath);
            // create WorkingFolder and mapping
            myworkspace.CreateMapping(workingFolder);

            foreach (Changeset changeset in changesets.OrderBy(c => c.ChangesetId))
            {
                var version = new ChangesetVersionSpec(changeset.ChangesetId);

                foreach (Change change in changeset.Changes)
                {
                    myworkspace.Get(new[] { change.Item.ServerItem }, version, RecursionType.Full, GetOptions.Overwrite);
                }
            }

如果需要,我可以提供更多详细信息。

1 个答案:

答案 0 :(得分:3)

如果您想获得单个文件,则需要使用RecursionType.None,而不是RecursionType.Full

在作为文件的路径上使用RecursionType.Full时,您指定要在指定文件夹中使用该名称的文件,具有相同名称的任何文件子文件夹。

因此,如果您指定$/Project/file.txt,则会下载$/Project/file.txt以及$/Project/subdir1/file.txt$/Project/subdir2/file.txt等。

指定RecursionType.None以与完全匹配给定路径。