【问题标题】:how to share resources between trunks in SVN?如何在 SVN 中的中继之间共享资源?
【发布时间】:2013-04-11 11:05:39
【问题描述】:

我们有两个共享相同公共文件的项目。

例如

parentproj/subproj1/trunk/common/a.js

parentproj/subproj2/trunk/common/a.js

我们要么修改 subproj1 中的 a.js,然后需要稍后将其复制到 subproj2,反之亦然。

我们不能用它自己的主干将 common 分离到它自己的 SVN 项目中,因为那样我们将无法检查 subproj 并获取它。在 CVS 中,我们可以很容易地解决这个问题,方法是将 common 放在两个项目之一中,然后在 CVS 服务器上的项目 2 中创建指向它的符号链接。

所以我们在上面的场景中有两个项目,每个项目都有自己的相同公共文件的副本。下一个问题是如何将更改从 1 合并到 2 或 2 到 1。Eclipse 无法做到这一点,因为它说“无法对与不同项目结构相关的资源执行操作”。 Tortiose SVN 不能这样做,因为你不能同时打开两个单独的目录。如果您尝试使用 tortoise 将修改后的文件从一个项目“复制”到另一个项目,它会说它已经存在。

我们已将 subproj1 设置为名义上的 master,并对 subproj2 进行了 svn 复制。但我相信这对我们没有帮助。

目前,我们使用 eclipse 手动剪切和粘贴每个更新的公共文件的更改,然后提交更改。

这意味着两个不同项目的版本号不同,即使是同一个文件,内容相同。

有什么想法吗?

目前我们没有或使用命令行 SVN,因为记住并正确地标记/复制文件的长 URL 路径似乎太冒险了,但如果唯一的方法会考虑它。

我们的代码大部分是js文件,也有一些asp和html

如果我们使用 CVS,我们只需要一个项目(父项目),下面有一个“game1”和一个“game2”目录,以及一个公共目录。这是因为 CVS 允许您基于目录进行分支和标记,而 SVN 只能明智地分支/标记/合并整个主干。主干目录完全妨碍了 Eclipse,因为这意味着我们不能一次签出两个项目,我们必须分别签出每个项目,这样我们就不会在路径中获得主干目录。

【问题讨论】:

    标签: svn


    【解决方案1】:

    使用 TortoiseSVN,您无需打开两个目录。只需在其中一个上选择合并,然后选择另一个目录的 URL 作为合并源。

    至于分离 - 您可以将常用的东西分离到第三个位置并将其分支到每个子项目中。

    【讨论】:

    • 嗨,它们在同一个仓库中。我们希望两个项目始终获得最新版本,但如果我们必须手动更新依赖版本,我们可以这样做。我们只需要一种方法来合并更改,而无需手动逐行进行。
    • 我的错,ecrise的错误实际上是:无法对与不同项目结构相关的资源进行操作
    • 关于共同拥有自己的主干的有趣想法。如果我然后分支到依赖项目,我会遇到同样的问题,即如何合并回来。是否可以有一个包含子目录的主干,这些子目录是其他项目的分支?
    • 如果你右键单击一个 a.js,选择在 tortoise SVN 中合并,它会要求选择“合并修订范围”、“重新整合分支”或“合并 2 棵不同的树”。我应该使用重新整合分支,还是合并不同的树?我应该从 proj1 a.js 还是 proj2 a.js 执行此操作,还是有关系(proj2 是分支)。
    • 在这里您可以找到关于合并分支的描述:svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html - 可能比我在评论中的内容要好。至于合并文件 - 如果它完全独立于其余部分可能没问题,但如果常见的东西具有相互依赖关系,最好在包含所有常见文件的目录级别进行分支和合并。
    【解决方案2】:

    我们不能用自己的trunk将common out分离到自己的SVN项目中,因为那样我们将无法签出子项目并获取它。

    但你必须能够:阅读和使用 svn:externals。如果您共享整个公共目录,则外部可以存在于单独的存储库中。如果您共享只共享普通文件,SVN 必须是 1.6+,externals 目标必须与源在同一个 repo 中

    【讨论】:

      猜你喜欢
      • 2012-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-10
      • 2021-09-24
      相关资源
      最近更新 更多