1

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

例如

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 只能明智地分支/标记/合并整个主干。主干目录完全妨碍了日食,因为这意味着我们不能一次签出两个项目,我们必须分别签出每个项目,这样我们就不会在路径中获得主干目录。

4

2 回答 2

1

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

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

于 2013-04-11T11:14:40.300 回答
1

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

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

于 2013-04-11T15:42:48.760 回答