如果我理解正确的subversion版本定义:
一旦我们安装了svn服务器,我们就不会触摸/升级它。
在客户端,事情变得更加复杂。
在客户端(Windows),我们目前使用tortoisesvn。它的版本(如果我错了,请纠正我)对应于颠覆版本。
现在,我们要将我们的应用程序移植到Linux,因此我们考虑使用其他svn客户端(svn命令行实用程序,Eclipse插件和一些GUI前端)。
现在问题:
有几个不同的客户可以使用相同的结账代码吗? 如果是,那么这意味着我需要刻意拿起要使用的客户版本, 因为每个客户都希望在.svn目录中找到特定的格式/数据?
服务器版本与客户端之间有什么关系? 例如,如果服务器端是1.4而客户端是1.6,那么它意味着一些1.6 功能不起作用?
答案 0 :(得分:5)
工作副本格式是特定于客户端的主要版本(即,不要尝试在1.6客户端创建的WC上使用1.4客户端)。
从理论上讲,旧的客户端/新服务器反之亦然,但大多数测试都是在相同版本(1.6.x - 1.6.x)的情况下完成的。通常你可以混合使用客户端/服务器版本,只是新功能不适用于较旧的部分(即,1.4客户端与1.5服务器通信时不能使用mergeinfo,并且1.4客户端的提交将丢失,信息)。同样,最好坚持使用相同的主要版本,但如果有必要,你可以避免差异。
通常,您可以在发行说明中找到特定客户端构建的svn库版本。
答案 1 :(得分:5)
我强烈不建议您尝试对同一个结帐目录使用不同的Subversion客户端,特别是如果这些客户端运行在不同的平台上(即通过网络)。 Subversion使用文本文件上的行结尾执行特定于平台的事情,如果您在Windows上签出然后使用Linux检查相同的工作副本(例如),则可能会意外触摸每个文件的每一行通过添加虚假的CRLF行结尾。
如果您正在进行跨平台开发,请在您正在开发的每个平台上设置不同的结帐目录。如果您必须在登记前共享更改,请考虑使用Git和git-svn
网关。
答案 2 :(得分:2)
你非常接近这个标志。使用相同主要版本的新客户端始终可以读取工作副本和存储库,因此1.6客户端始终能够处理较旧的服务器或工作副本。
但是,您仍需要了解每个版本支持的版本。大多数人会自动将工作副本自动升级到自己的版本;因此,如果您使用较旧的1.4客户端结账,并使用较新的客户端更新它(例如最新的svn 1.6);工作副本将不再可用于前者。
答案 3 :(得分:1)
大多数客户端都会尊重他们在.svn目录中找到的格式。这意味着他们不会改变它。如果他们不支持该格式,您将收到错误,但他们不应该破坏数据。如果您使用多个不同的客户端来更新/使用结账,他们应该创建锁(因此第二个客户端会说其他人正在进行结账并停止)。但为了安全起见,你不应该试试这个。
是的,1.4客户端可以与1.6服务器通信,但新功能将无法使用。
通常,客户端会说它支持哪些服务器版本,但客户端是不同的项目,并有自己的版本编号方案。