我在 tfs 工作区中有一个本地文件夹并使用 TFS-API。
每天晚上我都会删除这个文件夹,然后将数据库脚本编写为 .sql 文件。
如果现在添加或编辑了某些内容,则会找到更改并进入待处理的更改以进行签入。
问题是我如何使用 TFS-API 检测到文件丢失(故意的,因为不再在数据库中并且不再编写脚本)。
第一步很明显,删除空文件夹中的所有文件和脚本。
我在开始时使用workspace.PendEdit,这使我能够覆盖来自外部的文件。
数据库脚本编写完成后,我将创建workspace.PendEdit 和workspace.PendAdd。
这按预期工作。但workspace.PendDelete 找不到已删除的文件,因此无法将这些文件添加为已删除到挂起的更改。
Power Tools for tfs 有一个命令行工具,它有一个在线标志,可以做到这一点,这就是我想要的。
我的问题:是否可以做到我用 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);
and workspace.PendEdit(localPath, RecursionType.Full);
它的工作方式就像一个sharm,因此新的.sql文件将等待添加和编辑(真正更改的脚本)等待“更改签入”。
// 此时我想workspace.PendDelete(new [] { localPath }, RecurstionType.Fulll);
执行相同的操作:发现文件在本地丢失,然后将该文件挂起以在服务器上删除。但这并没有发生。没有添加待处理的更改。
var pendingChanges = workspace.GetPendingChanges(localPath, RecursionType.Full);
workspace.CheckIn(pendingChanges, "Per TFS-API, " + DateTime.Now.ToString());