c# - 以编程方式将文件 checkin TFS 获得的数量超出预期

标签 c# api tfs checkin working-directory


所以我有一个 .NET 应用程序,它通过并生成一系列文件,将它们输出到本地目录,然后确定它是否需要更新现有文件或将新文件添加到 TFS(Team Foundation Server)项目中。
我在我的本地机器上有一个工作区,有 10 个不同的工作文件夹,它们是我在这台特定机器上处理的其他编码项目。当我去检查文件是否已经存在于 TFS 项目中并且需要更新或者是否需要作为新文件添加到项目中时,我的问题就发生了。
片段:

static string TFSProject = @"$/SQLScripts/";
static WorkspaceInfo wsInfo;
static VersionControlServer versionControl;
static string argPath = "E:\\SQLScripts\\";

wsInfo = Workstation.Current.GetLocalWorkspaceInfo(argPath);
TeamFoundationServer tfs = new TeamFoundationServer(wsInfo.ServerUri.AbsoluteUri);
versionControl = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));

Workspace workspace = versionControl.GetWorkspace(wsInfo);
workspace.GetLocalItemForServerItem(TFSProject);


此时,我检查文件是否存在,然后执行以下两项操作之一。如果文件存在,那么我将文件标记为编辑,然后将文件写出到本地目录,否则我将首先编写文件脚本,然后将文件添加到工作区。我不在乎物理文件是否与我生成的文件相同,因为我这样做是作为 SAS70 要求“跟踪更改”

如果存在,我会这样做:
workspace.PendEdit(文件名,RecurisionType.Full);
scriptoutthefile(文件名);

或者如果它不存在
scriptoutthefilename(文件名);
workspace.PendAdd(文件名,true);

好的,所有这些都是为了解决问题。当我去检查针对 PROJECT 的未决更改时,我得到了工作区中本地计算机上所有项目的所有未决更改。

// Show our pending changes. 
PendingChange[] pendingChanges = workspace.GetPendingChanges();
foreach (PendingChange pendingChange in pendingChanges)
{
    dosomething...
}

我认为通过将工作区设置为 workspace.GetLocalItemForServerItem(TFSProject) 它只会给我该特定工作文件夹的对象。

有没有办法强制工作区对象只处理特定的工作文件夹?

这有什么意义吗?提前致谢...

最佳答案

使用 LINQ 你可以获得特定文件夹的未决更改

PendingChange[] pendingChanges = workspace
    .GetPendingChanges()
    .Where(x => x.LocalOrServerFolder.Contains(argPath))
    .ToArray();

关于c# - 以编程方式将文件 checkin TFS 获得的数量超出预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/687434/

相关文章:

c# - 将 ObservableCollection 绑定(bind)为不同 CollectionViewSource 的源

c# - 如何解析和替换大型 csv 文件中不正确的跨世纪日期值

c# - Entity Framework : How to update database when modifying Model

node.js - 如何将常量值与 api get 请求一起发送到 Node 服务器

api - 瑞典 Saas 电子商务解决方案,具有良好的 API 并与 Klarna 集成

c# - 以编程方式设置 Hyper-V 快照的名称

C++ 游戏设计 - 什么库/API?

tfs - 在 TFS 构建中的 Visual Studio 2010 远程测试代理下使用 Microsoft Moles 主机运行单元测试

visual-studio-2012 - Visual Studio 2012/TFS 2012 - 配置系统无法初始化

tfs - 无法导入工作项类型定义: Microsoft. TeamFoundation.WorkItemTracking.Server.ProvisioningImportEventsCallback