【问题标题】:TF.exe creates folder instead of branchTF.exe 创建文件夹而不是分支
【发布时间】:2017-04-07 05:02:21
【问题描述】:

我在我的 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 的错误,还是我做错了什么?

例子:

这是一个分支命令的样子:

-- 编辑--

这是我手动操作的方法:

  1. 我使用菜单分支 Templates/BranchSource/Folder/Main:

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

  1. 结果是我期望得到的:

这与我使用代码执行此操作时得到的结果相同。唯一的区别是代码有时会创建一个文件夹。

【问题讨论】:

  • 您是否手动使用 tf 分支命令进行测试?我用 TFS 2013.5+VS2013.5 测试过,tf branch 命令只能创建文件夹图标,不能创建分支图标。
  • 我也试过了。无论我是手动尝试还是使用我的代码,它总是会创建一个分支图标。只是有时它会创建一个文件夹,我无法重建这种行为。我似乎只是随机发生的。
  • 你的环境和我一样吗?我总是在我身边得到文件夹图标。
  • 是的,我也使用 TFS 2013 和 VS 2013 Update 5。
  • 当我“手动”执行时,我只是添加了我所做的事情。

标签: c# tfs tf-cli


【解决方案1】:

tf.exe 无法做到这一点,但您可以在创建分支后使用电动工具中的 tfpt.exe 做到这一点。 (或来自 Visual Studio 中的源代码管理器):

tfpt branches /convertToBranch

另见:

【讨论】:

  • 是的,我也在考虑在分支后将文件夹转换为分支,但这对我来说似乎很脏。我的意思是,如果它第一次工作,那么它也应该工作两次。如果我第三次这样做,tf.exe 会再次按照我的预期创建一个分支。
  • 我不认为 tf.exe 尝试任何特殊的操作,它只是调用服务器上的 CreateBranch 函数并等待结果。
  • 我也这么认为。但是当我从已经转换为分支的文件夹手动分支时,新文件夹也应该是一个分支。还是我错了?正如您在我的示例中看到的那样,我从 Templates/BranchSource/Folder/Main 分支,而 Main 已经是一个分支。如果我是对的,那么 SecondBranchedFolder/Folder/Main 的主文件夹也应该是一个分支,没有文件夹。
  • 我不知道。我相信在 UI 中复选框默认启用,在命令行中没有这样的复选框。
  • 是的,没有复选框。但正如我在问题中所说,我的代码工作正常。从大约十次中的九次开始,分支就像我预期的那样分支。正如您在 FirstBranchedFoler/Folder/Main 中看到的那样。这是由我使用 TF.exe 的代码创建的。没有任何类型的复选框。但有时,它似乎是非常随机的,它并没有像我希望的那样工作。我只想知道为什么它有时会创建一个分支,有时会创建一个文件夹。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-15
  • 1970-01-01
相关资源
最近更新 更多