2011-06-06 74 views
2

我想將tfs文件從服務器上的一個位置移動到另一個位置。Team Foundation Server api移動文件

的過程會是:

給定一個服務器和項目名稱 - 遞歸項目文件夾的子文件夾和文件複製到另一個文件夾位置。

我看了很多不同的例子,有些使用tfscollection對象的一些工作區等等等等。剛接觸到tfs api時我有些困惑。

有人請爲此提供一些代碼示例(我正在使用VS 2010)?

我到目前爲止的代碼是:

NetworkCredential tfsCredential = new NetworkCredential("username", "password"); 
tfsCredential.Domain = "dsi"; 

TfsConfigurationServer server = new TfsConfigurationServer(new Uri("http://tfs.domain.com:8080/tfs"), tfsCredential); 
server.Authenticate(); 
VersionControlServer vcserver = server.GetService(typeof(VersionControlServer)) as VersionControlServer; 

回答

1

您需要使用工作區類這種類型的工作。如果您有現有的工作空間,則可以從您已擁有的VersionControlServer實例中獲取Workspace實例。如果不是,則需要創建一個新的臨時工作區,然後使用Workspace類的Get()方法之一下載需要對此臨時工作區進行更改的文件。

我不確定您想要移動或複製文件。要移動文件,請使用Workspace類的PendRename()方法之一。我沒有看到此方法的遞歸標誌,因此您可能必須對您想移動的文件進行遞歸和PendRename()。這會將這些文件添加到未決更改列表中。

要複製文件,您需要首先在工作區中創建文件的本地副本,然後使用其中一個PendAdd()方法將新文件添加到工作區中未決更改的列表中。

最後,您可以通過GetPendingChanges()獲取掛起更改列表,然後使用Checkin()執行簽入。

所有這些方法都是Workspace類。

+0

嗯,我知道我說的舉動,但多數民衆贊成在沒有必要。我想將文件從一個TFS文件夾複製到另一個文件夾。所以你說的是爲了複製,我必須先在本地下載文件,然後將PendAdd()添加到新的位置並檢查它們? – Perplexed 2011-06-08 14:12:23

+0

是的。除非你想分支文件,那麼你可以使用VersionControlServer.CreateBranch來創建一個包含現有文件的新分支,但是複製的文件不會與複製文件在同一個分支中。 – 2011-06-08 21:52:49

+0

你失去了TFS項目之間的歷史複製嗎?還是隻有與工作項目的關聯? – 2011-09-01 03:57:48