在TFS中将一个源复制/覆盖到另一个源?

时间:2013-12-12 12:50:33

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

问题背景:

在我的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);

1 个答案:

答案 0 :(得分: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
        }