我正在尝试了解svn在检查服务器上工作副本和最后一个修订版之间的差异时如何在套接字级别工作。
我一直关注这篇文章: http://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_ra_svn/protocol
这解释了协议,但我仍然不清楚当你发出“svn status”时subversion如何检查差异。
我正在寻找一种可以复制此行为的方法,因为我正在实现自己的SVN客户端。
答案 0 :(得分:1)
它没有,AFAIK。
运行svn st
时,将根据上次在WC(原始副本)上运行svn update
的时间戳检查文件WC副本的时间戳。如果它们不同,则计算文件的校验和,并与原始副本的校验和进行比较。如果不同,diff算法会计算差异。
当你运行svn st -u
时,客户端对服务器说“我的工作副本是在修订版X,从那时起哪些项目发生了变化?” (注意:不“发生了什么变化”,而是一个简单的“给我一个 更改了哪些项目的列表”)并且服务器返回一个列表(包括任何锁定)存在)。没有其他差异(我知道)发生。