【问题标题】:Safe to share a Subversion working copy between OS?在操作系统之间共享 Subversion 工作副本安全吗?
【发布时间】:2009-06-30 01:51:29
【问题描述】:

我过去听说在操作系统之间共享 Subversion 工作副本是不安全的。

例如:

  1. 将工作副本从 Windows 机器复制到 Linux 机器,并在其上使用 SVN 的 Linux 版本。
  2. 在 Windows 机器上,使用 SVN 的 Windows 二进制文件和 CygWin 二进制文件访问/操作 SVN 工作副本。 (例如,我可能想这样做以使用this solution)。

但我还没有明确听说它是否会导致 .svn 数据损坏。确实,如果将 svn:eol-style 设置为 native,EOL 问题可能会成为问题。

这个问题的当前状态是什么?它在最近的 SVN 版本中发生了变化吗?如果采取了某些预防措施(例如,不在两个平台上使用 svn:eol-style=native 签出/更新文件)是否安全?

【问题讨论】:

  • 我很好奇你为什么要复制存储库而不是仅仅签入/签出?
  • 一方面,我在日本,在澳大利亚有一个 2 GB 的存储库,通过 128 kbps 的企业链接。但问题中的用例 2 本质上也涉及使用 CygWin 工具就地访问工作副本。
  • 我在旅行时复制了存储库(基于文件),用于我独自工作的项目,然后将其复制回来。不过,我还没有玩过跨操作系统的游戏。

标签: svn


【解决方案1】:

我在 unix、linux、solaris 和 windows 之间的共享网络目录上使用了 svn;有趣的是,我遇到的唯一问题是不同的 svn 客户端版本“不兼容”。 linux 和 unix 机器配备了比 solaris svn 更早的 svn 版本;它又比 Windows 机器客户端更老。结果是运行“svn up”将元数据文件更新到正在运行的任何客户端;并且客户端不会访问具有更新元数据版本的文件。最终结果是 svn 客户端应该保持相同的版本号。

所以,是的,我已经能够在机器之间移动工作目录,而生命损失最小。也就是说,我从未使用过任何超出默认值的 svn 选项。

【讨论】:

  • 请注意,您可以混合使用 svn 客户端,只要它们在同一个版本系列中,例如全部在 1.5.x 或全部在 1.6.x。
【解决方案2】:

我的 svn 存储库在 Linux 上。我在 Linux 上有一个工作副本,在 WindowXP 上有另一个。

在 WindowXP 上,我使用 cygwin 访问我的工作副本。有时,我也使用 Tortoise 来获得视觉差异,文件的完整历史......

我从不尝试从使用 svndump 创建的 Linux 存储库恢复(或创建备份)到 Window 计算机。

[编辑]

我忘了提到更新与两个工作副本完美配合。

【讨论】:

    【解决方案3】:

    根据我的经验,它有效。

    不过,Windows 和 Linux 之间有时会出现区分大小写的问题。文件夹“Build”和“build”冲突以及“.htaccess”之类的东西。但没有什么难修复的。

    【讨论】:

      【解决方案4】:

      正如 CoderTao 所提到的,在工作副本上使用不同版本的 svn(客户端)会导致静默 WC 格式升级,因此请务必坚持使用单一版本系列以避免这种情况。

      除了您的主要问题之外,我看到您正在通过慢速链接使用 SVN 存储库。您可能想研究专为此类事情设计的分布式源代码控制系统。

      例如,Bazaar (bazaar-vcs.org) 有一个 bzr-svn 插件,可让您创建远程 SVN 存储库的本地分支。然后,您有一个快速的本地分支,您可以签出到多个位置,在本地处理,差异,浏览历史等。您可以在本地提交并保持您单独的本地(日本)分支同步,而不会缓慢提交到澳大利亚。一旦一切都好,您将您的更改推回上游到 SVN。如果您有兴趣,Bazaar wiki 上有很多工作流示例文档。 :)

      【讨论】:

        【解决方案5】:

        除了其他答案(因为他们似乎表明这是可行的),我可以明确报告共享一个工作副本(在我们的例子中是通过 Samba 共享),其中我们使用了“svn:eol-style native”确实给我们造成了问题,我们尽量避免。

        如果我们需要在机器之间复制一个工作文件夹(一种更有限的共享形式,可能是一次性操作),我们预计必须进入并对所有 svn:eol 样式的文件执行 CRLFTOLF 转换,事实上我们在过去已经通过编写一个实用程序来遍历树、检查 svn 属性并根据需要转换文件(全部在 Python 中)来实现这一点。

        因此,为了记录,我会明确声明这是一个问题。

        【讨论】:

          猜你喜欢
          • 2019-12-21
          • 2017-08-12
          • 2015-05-05
          • 2017-11-28
          • 1970-01-01
          • 1970-01-01
          • 2013-01-10
          • 2011-07-08
          • 2012-01-28
          相关资源
          最近更新 更多