克隆Visual Studio中待更改的文件结构

时间:2015-10-20 16:54:55

标签: git visual-studio github tfs

我在Visual Studio中使用TFS和Git,我希望能够将所有待处理文件和文件结构导出或克隆到我选择的文件夹中,以便可以在本地备份我的挂起更改而不是搁置或存储待处理文件。我目前不得不在Windows资源管理器中打开每个文件,然后运行脚本将文件及其文件结构复制到我的备份位置,这非常耗时且容易出现手动错误。有没有人知道TFS中的插件,功能,任何Git工具或Visual Studio中将待处理文件及其文件结构复制到我选择的文件夹中的东西?

1 个答案:

答案 0 :(得分:0)

您可以使用TFS API实现您的目标。获取所有文件,文件夹并获取其目录。判断文件是否正在等待更改。然后使用您的脚本将文件复制到备份位置。

您参考的工作空间代码:

private void PopulateTreeView(string workspaceName)
{
    // Connect to TFS - VersionControlServer Service
    var tfs =
        TfsTeamProjectCollectionFactory.GetTeamProjectCollection
        (new Uri("https://tfs2010:8080/defaultcollection"));
    var vcs = tfs.GetService<VersionControlServer>();

    // Get the workspace the user has currently selected
    var workspace = vcs.QueryWorkspaces(workspaceName, 
        vcs.AuthorizedUser, Environment.MachineName)[0];
    _workspace = workspace;
    tvWksNavigator.Nodes.Clear();

    // Loop through all folders and get directories and files
    foreach (var folder in workspace.Folders)
    {
        var info = new DirectoryInfo(folder.LocalItem);
        if (info.Exists)
        {
            var rootNode = new TreeNode(info.Name) { Tag = info };
            GetDirectories(info.GetDirectories(), rootNode);
            tvWksNavigator.Nodes.Add(rootNode);
        }
    }
}

使用QueryPendingChanges方法,可以传递文件路径并查看文件是否处于挂起更改状态,如果是,锁定类型是什么,还可以获取文件的下载详细信息。

var status = _workspace.QueryPendingSets(new[] { new ItemSpec(
                                                    dir.FullName, 
                                                    RecursionType.None) },
                                                    _workspace.Name, vcs.AuthorizedUser, 
                          false);