我在使用subversion方面有一些经验,但我首先要正确地构建我的存储库。
我有多个小的无关项目,但我也有一些全球项目,其中许多小项目都依赖于这些项目。全局项目包含可重用的库等,这是其他项目所共有的。
我是否只有一个存储库,但是每个项目都有一个项目根(主干)(即每个项目包含全局项目)?
我不想将所有项目放在同一个根目录中,因为除了全球项目之外,它们几乎是不相关的。
目前,所有小项目的解决方案都专门包括全球项目,这意味着他们可以更新源代码,但这意味着如果某些事情被提交到全球,那么所有项目都会受到影响。是否更好地分离这个并且只包括项目中的全局dll?这样我可以确保只有那个版本的全局用于该项目?
感谢您的建议!
答案 0 :(得分:1)
有两个相当实用的选择:
big_project
trunk
branches
tags
little_project_1
trunk
branches
tags
little_project_2
trunk
branches
tags
或者
trunk
big_project
little_project_1
little_project_2
branches
branch_x
big_project
little_project_1
little_project_2
branch_y
等
如果项目除了共享一些常用的实用程序库或其他一些项目之外几乎没有什么关系,我会选择选项1,因为它使它们更加整齐地分开。如果他们紧密联系在一起,选项2的优势在于您只需一次退房即可全部检查。
我认为无论如何都不重要。请注意,选项2不会强制您一起更新所有项目:您只能在trunk下提交一个项目。
如果他们共享的唯一内容是一些实用程序库,我会考虑将这些库分解为他们自己的项目,因此您不必为了获得三个函数而吮吸整个big_project。
答案 1 :(得分:0)
我建议在小项目中使用外部指令来引入大项目中的库。
SVN外部指令具有一些在外部(大项目)位于同一存储库时最有效的功能,因此我不建议使用单独的存储库。为每个项目使用单独的顶级文件夹。像杰伊的选择1.
当您使用外部指令链接到大项目中的特定修订时,以便对大项目的更改不会影响小项目。当一个小项目准备好利用大项目的变化时,他们可以更改其外部指令以链接到新版本。