Php 在TFS中签入时检索文件的MD5

Php 在TFS中签入时检索文件的MD5,php,visual-studio-2012,tfs,md5,Php,Visual Studio 2012,Tfs,Md5,我正在将Visual Studio 2012与TFS一起使用。我正在编写一个工具,用从TFS检索的tf历史检查一个单独的数据库。但是,我只能从本地存储的当前文件中获取MD5,如果我在数据库中搜索该文件,但与较早的变更集相关,则会得到不准确的结果。是否有方法在签入时检索文件的MD5 我正在用PHP(5.3)编写一个脚本来完成这一切,我知道有md5_文件(filename),或者您可以执行md5(file_get_contents(filename)),但这仅适用于本地保存的文件 ***编辑:我找到

我正在将Visual Studio 2012与TFS一起使用。我正在编写一个工具,用从TFS检索的tf历史检查一个单独的数据库。但是,我只能从本地存储的当前文件中获取MD5,如果我在数据库中搜索该文件,但与较早的变更集相关,则会得到不准确的结果。是否有方法在签入时检索文件的MD5

我正在用PHP(5.3)编写一个脚本来完成这一切,我知道有md5_文件(filename),或者您可以执行md5(file_get_contents(filename)),但这仅适用于本地保存的文件


***编辑:我找到了一个解决方法,当我使用tf history并获取一个文件的所有变更集时,我还使用tf get filename.txt;更改集#然后在运行时获取md5。我不确定是否有更有效的方法,但这在目前有效

我知道如何通过TFSAPI实现这一点。如果使用GetPendingChanges()查询工作区中的挂起更改(如果不希望工作区中的所有挂起更改,则使用QueryPendingSets()),则将获得一个PendingChange对象数组。PendingChange对象有很多属性。其中两个属性是
PendingChange.HashValue
属性,该属性获取挂起更改内容的MD5 HashValue

HashValue属性是挂起更改的版本内容的MD5哈希值。此值将不同于磁盘上文件的MD5散列,您需要使用MD5CryptoServiceProvider自行计算该散列


更多详情请参阅本博客:

谢谢!我将详细介绍这一点,但在阅读了这篇文章之后,它似乎不是我可以在php脚本中使用的东西。tf历史记录中是否有命令或选项可用于显示文件变更集的md5?不幸的是,没有此类tf命令将直接返回具有特定变更集的文件的相应md5。使用MD5只是为了比较特殊情况。在TFS中,如果要获取文件的特定版本,只需知道该文件的变更集版本并使用该变更集获取即可。你的变通方法似乎很适合你的需要。顺便问一下,为什么您想在您的案例中获得该文件的MD5?您不能直接为一个文件存储所有版本的相应变更集吗?我正在更新一个工作中的工具,在数据库中,该文件有时(很少)没有与关联的变更集一起存储。该工具使用MD5进行搜索,但在执行工具时它是文件的MD5,因此有时会返回不准确的结果。