我正在使用带有 TFS 的 Visual Studio 2012。我正在编写一个工具,使用从 TFS 检索的 tf 历史记录检查单独的数据库。但是,我只能从本地存储的当前文件中获取 MD5,如果我在数据库中搜索该文件但与早期变更集相关,这会给出不准确的结果。有没有办法在 checkin 时检索文件的 MD5?
我正在用 PHP (5.3) 编写一个脚本来完成这一切,我知道有 md5_file(filename) 或者你可以做 md5(file_get_contents(filename)) 但这仅适用于本地保存的文件。
***编辑:我找到了一个解决方法,当我使用 tf History 并获取文件的所有变更集时,我还使用 tf get filename.txt;changeset# ,然后获取 md5。我不确定是否有更有效的方法,但这目前有效。
最佳答案
我知道如何通过 TFS API 实现这一点。如果您使用 GetPendingChanges()(如果您不需要工作区的所有待处理更改,则使用 QueryPendingSets())查询工作区中的待处理更改,您将获得一个 PendingChange 对象数组。 PendingChange 对象有很多属性。其中两个属性是 HashValue 和 UploadHashValue 。 PendingChange.HashValue
属性,用于获取挂起更改内容的 MD5 HashValue。
HashValue 属性是待更改的版本内容的 MD5 哈希。该值与磁盘上文件的 MD5 哈希值不同,您需要使用 MD5CryptoServiceProvider 自行计算该值。
更多详情请引用此博客:TFS API: Determining if an edited file has changed
关于php - 在TFS中 checkin 时检索文件的MD5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40600056/