我想在工作区中获取当前的变更集ID。这个问题在“Get current changeset id on workspace for TFS”中解决。
tf history . /r /noprompt /stopafter:1 /version:W
这几乎在所有情况下都有效。但是,如果当前变更集仅包含来自TFS的删除,则此操作将失败。这不一定是changesetId-1,但取决于我查询的文件/文件夹的历史记录。
如果当前变更集仅删除了一些文件,则在我查询的文件/文件夹的历史记录中,对当前变更集的变更集优先。
当我使用http://blogs.msdn.com/b/buckh/archive/2009/01/26/how-to-determine-the-latest-changeset-in-your-workspace.aspx上提到的TFS API调用时,也会发生同样的事情
这是TFS中的错误吗?有没有人有办法解决吗?
提前致谢。
最佳答案
这里的关键是您指定的版本是W,表示工作区。历史查询正在寻找工作空间中的更改。问题是您永远无法“拥有”一个删除所有文件的变更集-它们将不在您的工作空间中。取得成功的方法是,它计算您需要的内容并将其与您拥有的内容(在SQL中全部比较),然后将差异列表发送给客户端。结果,服务器上没有任何记录您的客户端已经处理了这些删除的事实。为了解决这个问题,我们必须运行get逻辑来检查这种极端情况。因此,您是对的,在这种情况下,这是错误的。我会问团队,但是除非有我没有想到的更好的方法来解决它,否则我不会更改它。
关于visual-studio-2013 - 如果更改集仅包含删除,则TF.EXE历史记录将被关闭,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28452945/