6

在我的公司,我们有一个为每个客户定制的基础软件。今天使用 SVN,我们有这样的设置:

/trunk
/tags
    …
/branches
    /client_project_x
    /client_project_y
    /client_project_z

在 git 中组织这个最好的方法是什么?每个项目都有一个远程存储库和一个用于基本代码的远程存储库,还是有一个带有多个分支的大型远程存储库?

如果我们使用带有多个分支的大型远程仓库,有没有办法从远程仓库克隆一个分支?

4

4 回答 4

2

从概念上讲,一个存储库中的多个分支与多个存储库中的分支之间没有区别。DVCS 的全部意义在于消除这种区别。您想根据需要访问和控制任何给定分支的人员来考虑它。如果每个开发人员都可以访问每个客户端的代码,那么将它们全部放在一个中央存储库中会更容易。您可以选择要克隆或不克隆的分支,尽管克隆整个 repo 是最简单的。如果您需要在不同的分支中拥有非常不同的访问权限,最好为它们创建单独的存储库。

换句话说,以任何一种方式设置它都可以让开发和测试团队更容易。

于 2012-09-04T13:53:43.317 回答
1

单独的项目应该在单独的存储库中。

(就像使用 git 一样简单。将大量不相关或松散相关的项目保存在单个存储库中,无论是在大树中还是在单独的分支中,都没有优势,也有很多潜在的劣势。)

于 2012-09-04T13:25:08.123 回答
0

git 的诞生是为了让分支/合并分支变得如此简单,所以只需根据需要创建分支以获取新功能、测试功能、与子团队合作,而不会影响公司的其他部门!例如,Linux 有数千个分支,而且还在不断增长!

观看Linus Torvalds 的这个视频,这将帮助您了解他在开发 git 时所拥有的“头脑”价值观。

于 2012-09-04T13:25:37.420 回答
0

我使用了几个回购:

核心在一个存储库中,每个插件和每个客户端都有自己的存储库:

  • 模组(核心)
  • modwork_foo(客户端“foo”的配置)
  • modwork_app1(可以为多个客户端安装的应用程序)

在安装或构建过程中不会修改核心中的单个文件。每个客户都有相同的核心。核心包含自定义方法的钩子。

我不喜欢为客户修改分支的核心文件。我认为如果您有超过 5 个客户,这会变得很困难。

于 2012-09-04T14:07:12.773 回答