我正在尝试使用 VersionControlServer.GetItem() 或 GetItems() 方法从已重命名的 TFS 版本控制中检索项目。我发现当一个项目被删除时,以下方法可以正常工作。但是,如果项目的最后更改是“删除、源重命名”,则这些 API 调用不会检索该项目。
此方法适用于已删除的项目。但不是重命名的项目。对于一个已删除的项目,我会得到我期望的......一个带有删除 ID 的项目。对于重命名的项目,我得到一个例外。
Microsoft.TeamFoundation.VersionControl.Client.VersionControlException:在版本 T 的源代码管理中找不到项目 (serveritem)。
VersionControlService.GetItem(ServerItem, VersionSpec.Latest, DeletedState.Any)
我试图通过使用 GetItems 方法来解决这个问题。事实上,我没有遇到异常......但是 GetItems 返回一个空项目集。
VersionControlService.GetItems(ServerItem, VersionSpec.Latest, RecursionType.None, DeletedState.Any, ItemType.Any);
看来这是API中的错误或其他东西。就好像 API 不会将重命名的文件视为它们曾经存在过一样。我使用 VersionControlService.ServerItemExists() 的实验进一步支持了这一点
对于已删除的项目,这将返回 TRUE。对于重命名的项目,这将返回 FALSE
VersionControlService.ServerItemExists(ServerItem, VersionSpec.Latest, DeletedState.Any, ItemType.Any);
那么,如果您只知道 ServerItem 路径,有没有办法获得已重命名的项目?我正在使用 TFS 2010,顺便说一句。