以编程方式重命名 TFS 分支 c# (TFS 2017)

Rename TFS Branch Programaticly c# (TFS2017)

我正在尝试使用 Microsoft.TeamFoundation.VersionControl.Client 中的 "PendRename" 方法以编程方式重命名分支。

移动工作,所以,如果我用它把所有东西移动到一个新的位置,它就可以工作,但我需要的是重命名一个分支。 可以通过命令行 "tfs.exe rename " 执行此操作(如果我为同一服务器 url 映射了多个工作区,即使这也会给我错误。在您的工作区中找不到 ...或者您没有访问它的权限。)

那么,您能否帮助理解为什么重命名分支不起作用?

谢谢,

Rename or move files and folders in TFVC, you must be one of the Contributors for your team project. See Team Foundation Server default groups, permissions, and roles

我对此进行了测试,并使用“PendRename”方法正确重命名了分支。

以下代码示例供您参考:

using System;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.VersionControl.Client;

namespace RenameBranch
{
    class Program
    {
        static void Main(string[] args)
        {
            string oldPath = @"E:\andy18Scrum\web0418-0823";
            string newPath = @"E:\andy18Scrum\web0418-1020";
            string collection = @"http://server:8080/tfs/DefaultCollection";
            var tfsServer = new Uri(collection);
            var tpc = new TfsTeamProjectCollection(tfsServer);
            var vcs = tpc.GetService<VersionControlServer>();

            Workspace workspace = vcs.GetWorkspace("YourWorkspaceName", vcs.AuthorizedUser);

            workspace.PendRename(oldPath, newPath);
        }
    }
}

那你当然需要CheckIn了。使用 "workspace.GetPendingChanges()" 和 "workspace.CheckIn()" 方法来完成。

谢谢,

问题是,有不同的进程正在为目录生成工作空间,然后,他无法删除它。

所以,我通过以下步骤解决了这个问题: 1. 为我的应用保留一个工作区本地位置 2. 查看此工作区是否已映射。如果是,我将其删除 3.为路径中的上一个文件夹创建一个工作区并创建地图 4.获取最新 5.重命名

感谢 Andy-MSFT 的支持。