c# – TF.exe创建文件夹而不是分支

我在我的C#代码中使用tf.exe在TFS中创建新的分支.这就是我做的:

public static bool TFBranch(string projectPath, string originName, string branchName)
{
    string branchedProject = projectPath + "\\" + branchName;

    string projectToBranch = projectPath + "\\" + originName;

    string path = Environment.ExpandEnvironmentVariables(@"branch " + projectToBranch + " " + branchedProject);
    path = path.Replace("\\", "/");

    return ExecuteProcess(path);
}

private static bool ExecuteProcess(string path)
{
    MyProcess proc = new MyProcess();

    var currentDirectory = WorkspaceHandler.GetLocalWorkspace();

    var command = @"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\tf.exe";

    Directory.SetCurrentDirectory(currentDirectory);
    proc.FileName = command;
    proc.Arguments = path;

    try
    {
        proc.Execute();
    }
    catch (Exception e)
    {
        _Logger.Error("Could not execute TF.exe. Exception: " + e.ToString());
        return false;
    }

    return true;
}

除了它之外,一切都像我一样有效.我从已经包含分支的目录分支,因此新分支也包含分支.但有时tf.exe会创建一个文件夹,而不是分支.这是来自tf.exe的错误,还是我做错了什么?

例:

这是分支命令的样子:

《c# – TF.exe创建文件夹而不是分支》

《c# – TF.exe创建文件夹而不是分支》

– 编辑 –

以下是我手动操作的方法:

>我使用菜单分支模板/ BranchSource / Folder / Main:

《c# – TF.exe创建文件夹而不是分支》

>在对话框中,我定义了“目标分支名称”:

《c# – TF.exe创建文件夹而不是分支》

>结果是我期望得到的结果:

《c# – TF.exe创建文件夹而不是分支》

这与我使用代码时获得的结果相同.唯一的区别是代码有时会创建一个文件夹.

最佳答案 tf.exe无法做到这一点,但您可以在创建分支后使用电动工具中的tfpt.exe执行此操作. (或从Visual Studio中的Source控件浏览器):

tfpt branches /convertToBranch

也可以看看:

> TFS 2010 – command line for convert to branch

点赞