svn客户端/服务器版本

时间:2009-10-02 09:07:01

标签: svn version-control

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

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

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

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

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

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

现在问题:

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

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

  3. 对于subverions的版本而言,subversion客户端的版本是否正确,例如rapidsvn而不是tortoisesvn

4 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:5)

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

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

答案 2 :(得分:2)

你非常接近这个标志。使用相同主要版本的新客户端始终可以读取工作副本和存储库,因此1.6客户端始终能够处理较旧的服务器或工作副本。

但是,您仍需要了解每个版本支持的版本。大多数人会自动将工作副本自动升级到自己的版本;因此,如果您使用较旧的1.4客户端结账,并使用较新的客户端更新它(例如最新的svn 1.6);工作副本将不再可用于前者。

答案 3 :(得分:1)

  1. 大多数客户端都会尊重他们在.svn目录中找到的格式。这意味着他们不会改变它。如果他们不支持该格式,您将收到错误,但他们不应该破坏数据。如果您使用多个不同的客户端来更新/使用结账,他们应该创建锁(因此第二个客户端会说其他人正在进行结账并停止)。但为了安全起见,你不应该试试这个。

  2. 是的,1.4客户端可以与1.6服务器通信,但新功能将无法使用。

  3. 通常,客户端会说它支持哪些服务器版本,但客户端是不同的项目,并有自己的版本编号方案。