【问题标题】:Copying/over-writing one source to another in TFS?在 TFS 中将一个源复制/覆盖到另一个源?
【发布时间】:2013-12-30 21:34:37
【问题描述】:

问题背景:

在我的 TF 服务器中,我有两个文件夹,一个是名为“HelloWorldDev”的文件夹中的简单“HelloWorld.sln”,另一个是名为“HelloWorldQA”的文件夹中的“HelloWorld.sln”。每个文件夹都包含其各自的 .cs 文件等。

我想从 HelloWorld QA 文件夹中签出一个文件,用 HelloWorldDev 文件夹中具有相同文件名的版本替换或更新它,然后将该文件签回 HelloWorldQA 文件夹并进行相关更改。

问题:

我对 TFS API 很陌生,所以我不是 100% 我想问的是正确的方法,或者它是否可能。有人可以给我一个实现这一目标的例子吗?

到目前为止的代码:

       string fileName = @"C:\Users\Me\Documents\TfsServer\HelloWorldQA\IHelloWorld.cs";
        string fileNameQA = @"C:\Users\Me\Documents\TfsServer\HelloWorld\IHelloWorld.cs";

        string uri = @"https://tfsServer.visualstudio.com/";

        var workspaceInfo = Workstation.Current.GetLocalWorkspaceInfo(fileName);
        var server = new TfsTeamProjectCollection(workspaceInfo.ServerUri);
        var workspace = workspaceInfo.GetWorkspace(server);

        workspace.PendEdit(fileName);


        FileInfo fi = new FileInfo(fileName);


        var workspaceInfoQA = Workstation.Current.GetLocalWorkspaceInfo(fileNameQA);
        var serverQA = new TfsTeamProjectCollection(workspaceInfo.ServerUri);
        var workspaceQA = workspaceInfo.GetWorkspace(serverQA);

        workspace.PendEdit(fileNameQA);


        FileInfo fiQA = new FileInfo(fileNameQA);

【问题讨论】:

    标签: c# .net visual-studio-2012 tfs azure-devops


    【解决方案1】:

    首先,您可以简单地将两个文件夹映射到同一个工作区中,而不是使用 2 个工作区。

    那么您正在寻找merge 操作:

            var sourcePath = workspace.GetServerItemForLocalItem(fileName);
            var targetPath = workspace.GetServerItemForLocalItem(fileNameQA);
    
            var getStatus = workspace.Merge(sourcePath, targetPath, null, null);
            if (getStatus.NumUpdated > 0)
            {
                //OK
            }
    

    【讨论】:

      猜你喜欢
      • 2011-12-15
      • 2022-01-28
      • 2016-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多