Subversion提交如何工作?

时间:2014-03-26 09:41:13

标签: svn version-control commit

我想知道文件如何传输到服务器。客户端是否首先发送有关文件所在文件夹的信息?

我也不知道服务器何时何地说在尝试提交时存在冲突。

提前致谢。

1 个答案:

答案 0 :(得分:2)

我真的不明白你的第一个问题。无论如何,你为什么要关心它?

如果它抱怨冲突,这很可能是在您之前的工作区更新中,发生了冲突。您可能已在代码中修复了该问题,但您尚未告知SVN您已解决该冲突。

svn status是否应该告诉您要解决的包含冲突的地方。

然后,您可以执行svn resolve将这些冲突标记为已解决。

(如果使用GUI,则类似)


更新(对应于您最新评论的原因):

最好的方法是查看SVN的源代码实际上:)但是,当你构建一个新系统而不是需要SVN兼容性的东西时,我相信你只需要一个可行的解决方案而不是实现什么SVN正在做。

我能想到两种解决方案(我相信第一种是SVN正在做的方式)

  1. 将所有(相对)路径和已更改对象的修订发送到服务器。服务器可以简单地检查相关对象是否在服务器中具有更高版本,这反过来意味着客户端中的文件已过时。如果没有过时响应,则客户端会将实际内容发送到服务器。

  2. 将实际文件内容(当然包含路径和修订版)发送到服务器。按照1中的描述进行类似检查,如果没有问题则直接提交。

  3. 通过避免不必要的流量,第一种方法可以提供更好的性能。但是,如果您正在编写此类修订控制系统,则需要妥善处理许多事项。例如如果采取第一种方法,如何避免第一次和第二次调用服务器之间的数据更改? (SVN有某种交易对象)。如何处理移动和重命名?等

    如果没有特殊原因,为什么不简单地使用现有的SCM作为后端?无论是SVN还是Git或Hg都可以为你解决很多问题。