我想知道文件如何传输到服务器。客户端是否首先发送有关文件所在文件夹的信息?
我也不知道服务器何时何地说在尝试提交时存在冲突。
提前致谢。
答案 0 :(得分:2)
我真的不明白你的第一个问题。无论如何,你为什么要关心它?
如果它抱怨冲突,这很可能是在您之前的工作区更新中,发生了冲突。您可能已在代码中修复了该问题,但您尚未告知SVN您已解决该冲突。
svn status
是否应该告诉您要解决的包含冲突的地方。
然后,您可以执行svn resolve
将这些冲突标记为已解决。
(如果使用GUI,则类似)
更新(对应于您最新评论的原因):
最好的方法是查看SVN的源代码实际上:)但是,当你构建一个新系统而不是需要SVN兼容性的东西时,我相信你只需要一个可行的解决方案而不是实现什么SVN正在做。
我能想到两种解决方案(我相信第一种是SVN正在做的方式)
将所有(相对)路径和已更改对象的修订发送到服务器。服务器可以简单地检查相关对象是否在服务器中具有更高版本,这反过来意味着客户端中的文件已过时。如果没有过时响应,则客户端会将实际内容发送到服务器。
将实际文件内容(当然包含路径和修订版)发送到服务器。按照1中的描述进行类似检查,如果没有问题则直接提交。
通过避免不必要的流量,第一种方法可以提供更好的性能。但是,如果您正在编写此类修订控制系统,则需要妥善处理许多事项。例如如果采取第一种方法,如何避免第一次和第二次调用服务器之间的数据更改? (SVN有某种交易对象)。如何处理移动和重命名?等
如果没有特殊原因,为什么不简单地使用现有的SCM作为后端?无论是SVN还是Git或Hg都可以为你解决很多问题。