【问题标题】:svn client/server versionssvn 客户端/服务器版本
【发布时间】:2009-10-02 09:07:00
【问题描述】:

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

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

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

客户端的情况更复杂。

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

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

现在问题:

  1. 是否有可能多个不同的客户端使用相同的结帐代码? 如果是,则意味着我需要仔细挑选要使用的客户端版本, 因为每个客户都希望在 .svn 目录中找到特定的格式/数据?

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

  3. subversion客户端的版本是否真的不需要与subverions的版本相对应,例如rapidsvn而不是tortoisesvn

【问题讨论】:

    标签: svn version-control


    【解决方案1】:

    强烈不建议您尝试针对同一个结帐目录使用不同的 Subversion 客户端,尤其是当它们在不同平台上运行时(即跨网络)。 Subversion 使用文本文件的行结尾来执行特定于平台的操作,如果您在 Windows 上签出,然后在 Linux 上签入同一个工作副本(例如),您可能会不小心接触到 每个文件的每一行 通过添加虚假的 CRLF 行尾。

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

    【讨论】:

    • 您的意思是在平台特定的结帐目录之间共享更改吗?关于 git。与svn相比,我发现它相当复杂。 git-svn 需要深厚的 git 知识吗?是否可以使用 git-svn 作为主要的 svn 客户端或仅作为辅助客户端来创建私有分支/提交?
    • 关于共享的意思是:如果您使用特定平台的 Subversion 客户端将代码签入特定目录,请务必使用同一个客户端平台。不要混合使用相同工作目录结帐的平台。
    • 关于 Git,可以使用 git-svn 作为主要的 Subversion 客户端。当我需要使用 Subversion 存储库时,我使用 Git 完成大部分日常工作。我可以创建私有分支、存储更改、合并/重新设置私有分支以及所有这些好东西,甚至无需告诉 Subversion。当我准备好提交时,我构建了一个线性历史(通常不难)并将其svn dcommit 提交给 Subversion。但是,为了在 Subversion 存储库中操作分支,我通常会使用 Subversion 客户端而不是 git-svn。
    【解决方案2】:
    1. 工作副本格式是特定于客户端的主要版本(即,不要尝试在 1.6 客户端创建的 WC 上使用 1.4 客户端)。

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 值得注意的是,工作副本升级会立即无声地进行。一旦 1.6 客户端查看 1.4 工作副本,它会在不通知您的情况下对其进行升级,并锁定所有 1.4 客户端。
      【解决方案4】:
      1. 大多数客户端会尊重他们在 .svn 目录中找到的格式。这意味着他们不会改变它。如果它们不支持该格式,您会收到错误消息,但它们不应损坏数据。如果您使用多个不同的客户端来更新/使用结帐,它们应该创建锁(因此第二个客户端会说其他人当前正在结帐并停止)。但为了安全起见,你不应该尝试这个。

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

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

      【讨论】:

        猜你喜欢
        • 2019-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-25
        • 2015-02-28
        • 2013-02-27
        • 2010-10-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多