【问题标题】:Team foundation Server api move filesTeam Foundation Server api 移动文件
【发布时间】:2011-06-06 16:41:06
【问题描述】:

我想将 tfs 文件从服务器上的一个位置移动到另一个位置。

流程如下:

给定服务器和项目名称 - 递归项目文件夹的子文件夹并将文件复制到另一个文件夹位置。

我查看了许多不同的示例,一些使用 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;

【问题讨论】:

    标签: c# visual-studio-2010 tfs


    【解决方案1】:

    您需要为此类工作使用 Workspace 类。如果您有一个现有的工作区,您可以从您已经拥有的 VersionControlServer 实例中获取您的 Workspace 实例。如果没有,您需要创建一个新的临时工作区,然后使用 Workspace 类的 Get() 方法之一下载更改此临时工作区所需的文件。

    我不确定您要移动还是复制文件。要移动文件,请使用 Workspace 类的 PendRename() 方法之一。我没有看到此方法的递归标志,因此您可能必须自己进行递归,并为要移动的文件执行 PendRename()。这会将文件添加到待处理更改列表中。

    要复制文件,您需要先在工作区中制作文件的本地副本,然后使用其中一种 PendAdd() 方法将新文件添加到工作区中待更改的列表中。

    最后,您可以通过 GetPendingChanges() 获取待处理更改列表,然后使用 Checkin() 执行签入。

    所有这些方法都属于Workspace 类。

    【讨论】:

    • 好吧,我知道我说的是移动,但这不是必需的。我只想将文件从一个 TFS 文件夹复制到另一个。所以你说要复制,我必须先把文件下载到本地,然后PendAdd() 到新的位置签入?
    • 是的。除非您想对文件进行分支,否则您可以使用 VersionControlServer.CreateBranch 使用现有文件创建一个新分支,但复制的文件不会与复制的文件在同一个分支中。
    • 您会像这样在 TFS 项目之间丢失历史复制吗?还是只是与工作项的关联?
    • 如果您重命名您不会丢失历史记录,如果您制作一个新副本,那么是的,新添加的文件将具有不同的历史记录。另一种选择是分支文件,这也将保留历史记录。
    猜你喜欢
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 2012-05-29
    • 2018-06-24
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    相关资源
    最近更新 更多