2013-12-12 30 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 
     }