2013-12-12 28 views
0

问题背景:在TFS中复制/覆盖一个源到另一个源?

在我的TF服务器我有两个文件夹,一个是简单的“HelloWorld.sln”一个名为“HelloWorldDev”文件夹中,另一个是一个文件夹中“HelloWorld.sln”叫'HelloWorldQA'。每个文件夹都包含相应的.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

首先,而是采用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 
     }