2011-06-06 73 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