在SVN中,如何维护由2个或更多项目改变的公共代码库?

时间:2010-02-04 06:06:44

标签: svn version-control

这个问题在某种意义上与"Best way to share common code"有关,但在这种情况下情况略有不同。

我现在正在为一个项目编写一个应用程序,比如A。它尚未完成,现在将启动一个新的项目B,基本上是附加组件A的复制品。由于这两个项目尚未完成,我很可能会在A中修复我需要带到B的项目;也许B中的增强也是我想要移植到A的。

我应该如何在我的情况下使用SVN?

3 个答案:

答案 0 :(得分:1)

理想情况下,您应该尝试不要使用两个非常相似的项目副本。这是各种麻烦的秘诀;试图让它们保持同步如你所描述的那样需要不断地来回合并,这很难且容易出错。

更好的是,以这种方式构建项目,以便真正共享共享部分。也许把它变成一个图书馆。或者,也许,使它们成为一个大项目,有两个不同的构建 - 一个构建A,一个构建B。

答案 1 :(得分:1)

如果它们真的那么相似,我只想在Project A的项目B的回购中创建一个分支,然后根据需要合并。

否则,将公共代码提取到自己的新仓库中,并使用svn:externals在每个项目中引用它。

答案 2 :(得分:1)

听起来你想要在你的仓库中建立一个新的分支,你可以在那里开发新的东西,或者保持旧的分支。 (如果使用stadnard trunk / branches / tags布局,则必须选择)。这可能是最简单的方法。

如果您想分开代码,您的选项是:

  • 将所有内容放在同一个仓库中,每个项目的顶级目录(A,B,共享)或
  • 创建两个repos,A和B,使用svn:externals使用公共代码到第三个仓库,在那里你有A和B的分支(如果需要),这样你就可以轻松地合并两者。

如果代码在两个项目中独立更改,那么尝试在每个仓库中保留单独的版本是一种灾难。不支持在不同的回购之间进行合并,所以不要去那里。 (相信我。我去过那里。)