在我的公司,我们有一个基础软件,可以为每个客户定制。今天使用SVN我们有这样的设置:
/trunk
/tags
…
/branches
/client_project_x
/client_project_y
/client_project_z
如何以最好的方式在git中组织这个?有一个每个项目的远程存储库和一个基本代码,或者有一个带有几个分支的大型远程仓库?
如果我们使用一个带有多个分支的大型远程仓库,有一种方法可以从远程存储库中克隆一个分支吗?
答案 0 :(得分:2)
从概念上讲,一个存储库中的多个分支与多个存储库中的分支之间没有区别。 DVCS的重点在于消除这种区别。您希望根据需要访问和控制任何给定分支的人来考虑它。如果每个开发人员都可以从每个客户端访问代码,那么将它们放在一个中央存储库中会更容易。您可以选择要克隆或不克隆的分支,尽管克隆整个仓库是最简单的。如果您需要在不同分支中拥有非常不同的访问权限,则最好为它们创建单独的存储库。
换句话说,以任何方式进行设置,使开发和测试团队更容易。
答案 1 :(得分:1)
单独的项目应位于不同的存储库中。
(就像使用git那样简单。在一个大树或单独的分支中,将大量不相关或松散相关的项目保存在单个存储库中没有任何优势和许多潜在的缺点。)
答案 2 :(得分:0)
git的诞生是为了使分支/合并分支变得如此简单,所以只需按照您的需要制作新功能,测试功能,与子团队合作而不影响公司的其他部门!例如,Linux有数千个分支机构,而且它们正在增长!
观看Linus Torvalds的this video,这将有助于您了解他在开发git时所具有的“记住”价值。
答案 3 :(得分:0)
我使用了几个回购:
核心位于一个存储库中,每个插件和每个客户端都有自己的存储库:
在安装或构建过程中,核心中没有单个文件被修改。每个客户都有相同的核心。核心包含自定义方法的钩子。
我不喜欢在分支机构的核心中修改客户端的文件。如果您有超过5个客户,我认为这很难。