0

在检查工作副本与服务器上的最新版本之间的差异时,我试图了解 svn 在套接字级别的工作原理。

我一直在关注这篇文章:http: //svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_ra_svn/protocol

这解释了协议,但我仍然不清楚当您发出“svn 状态”时颠覆如何检查差异。

我正在寻找一种可以复制这种行为的方法,就像我正在实现自己的 SVN 客户端一样。

4

1 回答 1

1

它没有,AFAIK。

当您运行svn st时,将根据您上次svn update在 WC 上运行的时间戳(原始副本)检查文件 WC 副本的时间戳。如果它们不同,则计算文件的校验和并与原始副本的校验和进行比较。如果不同,则 diff 算法会计算差异。

当你运行svn st -u时,客户端对服务器说“我的工作副本是修订版 X,从那以后有哪些项目发生了变化?” (注意:不是“发生了哪些变化”,而是一个简单的“给我一个列表,列出了哪些项目发生了变化”)并且服务器返回一个列表(包括任何存在的锁)。没有其他差异(我知道)发生。

于 2013-05-24T16:09:26.767 回答