我在 tfs 工作区中有一个本地文件夹并使用 TFS-API。
每天晚上我都会删除这个文件夹,然后将数据库脚本作为 .sql 文件。如果现在添加或编辑了某些内容,则将找到更改并进入待处理的更改以进行签入。
问题是我如何使用 TFS-API 检测文件丢失(故意,因为不再在数据库中并且因为不再编写脚本)。第一步很明显,删除空文件夹中的所有文件和脚本。
我在开始时使用 workspace.PendEdit,这使我能够从外部覆盖文件。数据库脚本编写完成后,我将做一个workspace.PendEdit 和workspace.PendAdd。
这按预期工作。但是 workspace.PendDelete 没有找到已删除的文件,因此无法将这些已删除的文件添加到挂起的更改中。
tfs 的 power tools 有一个命令行工具,它有一个在线标志,应该这样做,我想要什么。
我的问题:有可能吗,我用 tfs-api 描述了什么?如果这不起作用,有没有人体验过这个在线标志?
简单示例
我在本地文件夹中有两个文件:1.sql 和 2.sql 这两个文件最初是签入的。
我在本地删除 2.sql(不了解 tfs)我添加一个文件:3.sql 我编辑 1.sql
现在,我使用 workspace.PendEdit 和 workspace PendAdd 来检测编辑和添加的文件。这些文件将被很好地检测到。
问题来了: 2.sql 缺失的删除将不会被检测到,因此无法在服务器上删除。
那么:如何在不了解 tfs 的情况下检测丢失的文件/本地删除的文件?
我希望这能澄清我的问题。
伪代码示例:
DeleteWorkspaceFolderContent(); // Because i do not delete but regenerate my Sql scripts.
GenerateSqlScriptsToWorkspaceFolder(); // .sql files are generated to the same folder, they were deleted before
// 现在在这一点上,我做了workspace.PendAdd(localPath, true);
,workspace.PendEdit(localPath, RecursionType.Full);
它的工作就像一个 sharm,所以新的 .sql 文件将等待添加和编辑(真正更改的脚本)等待“change-Checkin”。
// 在这一点上,我会workspace.PendDelete(new [] { localPath }, RecurstionType.Fulll);
做同样的事情:看到一个文件在本地丢失,然后在服务器上挂起这个文件以进行删除。但这不会发生。未添加待定更改。
var pendingChanges = workspace.GetPendingChanges(localPath, RecursionType.Full);
workspace.CheckIn(pendingChanges, "Per TFS-API, " + DateTime.Now.ToString());