SVN - 项目的多个分支

时间:2010-07-29 21:32:48

标签: svn

我有一个拥有所有核心功能的核心站点。

然后我需要创建4个子项目,这些子项目将使用相同的核心站点,但将具有不同的前端。

从指南我认为我可以使用分支机构,但如果在核心站点中发现错误,是否可以提交对核心的更改然后更新分支,我就无法解决?

谢谢,Alex

3 个答案:

答案 0 :(得分:4)

与此处的其他建议不同,我建议您坚持使用您习惯的工具。切换到git需要在SCM中有一些坚实的背景。它更强大,但也有更高的学习曲线。

我宁愿建议你为核心使用额外的分支,这些分支被拉入使用它们的分支svn:externals

如需帮助,请查看documentation here。通过这种方式,您可以省去为每个分支同步核心的繁琐工作。即使您需要一个分支机构坚持核心的特定版本,您也可以这样做。该链接甚至不需要在同一个物理存储库中,这使它成为一个非常灵活的工具。

但请确保您使用1.6版本的客户端和服务器。我在其他版本遇到了一些问题,因为链接的格式似乎已被修改和扩展。

答案 1 :(得分:1)

我建议使用分布式版本控制系统,如gitmercurial。虽然SVN中的分支是O(1),但合并不是。事实上,如果核心是相同的,你可以将它作为一个库并导入它。

答案 2 :(得分:1)

只有在一个库中进行开发时才应使用分支。你最终会合并或哄骗所有回购的变化 - 这是一场噩梦!

我也建议git ... svn没有子模块。

您可以这样做:

MainLibraryRepo:您的共享代码

Repo1:Site1

  • 子模块:MainLibraryRepo
  • 其他子模块......

回购2:Site2

  • 子模块:MainLibraryRepo
  • 其他子模块......

此设置的原因:

  • 您可以将站点绑定到库的已定义版本(可以在提交主要回购之前测试库的更新)
  • 可以作为一个单元处理的代码应该保留在它自己的repo中并拥有它自己的历史

git的原因:

  • 很快
  • 合并简单快捷
  • 子模块是您需要的解决方案
  • 您可以在没有服务器/客户端的情况下开发