svn客户端/服务器版本

dim*_*mba 4 svn version-control

如果我理解正确版本的subversion定义:

  • 服务器上的结构存储库
  • 客户端的工作副本结构
  • 客户端和服务器之间的API

一旦我们安装了svn服务器,我们就不会触摸/升级它.

在客户端,事情变得更加复杂.

在客户端(Windows),我们目前使用tortoisesvn.它的版本(如果我错了,请纠正我)对应于颠覆版本.

现在,我们将我们的应用程序移植到Linux,因此我们考虑使用其他svn客户端(svn命令行实用程序,Eclipse插件和一些GUI前端).

现在的问题是:

  1. 有几个不同的客户可以使用相同的结账代码吗?如果是,那么这意味着我需要刻意拿起要使用的客户端版本,因为每个客户端都希望在.svn目录中找到特定的格式/数据?

  2. 服务器版本和客户端之间有什么关系?例如,如果服务器端是1.4而客户端是1.6,那么这意味着某些1.6功能不起作用?

  3. 是不是版本的subversion客户端对应于subverions的版本,例如rapidvn而不是tortoisesvn

nit*_*one 5

  1. 工作副本格式是特定于客户端的主要版本(即,不要尝试在1.6客户端创建的WC上使用1.4客户端).

  2. 从理论上讲,旧的客户端/新服务器,反之亦然,但大多数测试都是在相同的版本(1.6.x - 1.6.x)场景下完成的.通常你可以混合使用客户端/服务器版本,只是新功能不适用于较旧的部分(即,1.4客户端与1.5服务器通信时不能使用mergeinfo,并且1.4客户端的提交将丢失,信息).同样,最好坚持使用相同的主要版本,但如果有必要,您可以避开差异.

  3. 通常,您可以在发行说明中找到特定客户端构建的svn库版本.


Gre*_*ill 5

强烈建议您不要尝试对同一个checkout目录使用不同的Subversion客户端,特别是如果这些客户端在不同的平台上运行(即通过网络).Subversion使用文本文件上的行结尾执行特定于平台的事情,如果您在Windows上签出然后使用Linux检查相同的工作副本(例如),则可能会通过添加虚假的CRLF行结尾而意外触摸每个文件的每一行.

如果您正在进行跨平台开发,请在您正在进行开发的每个平台上设置不同的checkout目录.如果您必须在签入之前共享更改,请考虑使用Git和git-svn网关.