使用git实现高效的项目架构

meg*_*ido 5 git git-merge git-branch

首先,让我介绍一个项目的总体架构.

它是分层的.我们为客户开发服务器应用程序.它存储在主服务器上.

比如说,本地服务器1,本地服务器2,...,本地服务器n是不同公司的服务器(主应用程序实例).每家公司都有一台本地服务器.大多数所有本地服务器都具有相同的功能(例如,核心模块),但每个公司都可以拥有它.作为一个想法,决定通过git分支解决这个问题.

让我们考虑一些案例.

案例1
一家公司(本地服务器x)需要一些仅在该公司中需要的特定功能.遵循我们的分支理念的逻辑,我们执行以下步骤:

  1. 在主服务器上创建git分支
  2. 为该服务器开发所需的功能
  3. 在本地服务器x上创建git branch(branch y)
  4. 推送更改到主服务器
  5. 在本地服务器x上切换分支y
  6. 切换到主服务器上的主分支

案例2
我们开发了一些对所有公司都很常见的功能(核心模块的更改)

案例3
我们开发了一些仅对某些公司而言很常见的功能

想听听有关如何解决" 案例2 "和" 案例3 "的建议.

Mrc*_*ief 8

从技术上讲,@ VonC说分支是可行的方法是正确的.

但有一点需要注意.你在这里混合了两种不同的范例.SCM(git是一种工具)意味着管理源代码及其不同版本.

启用/禁用产品功能是产品管理.从本质上讲,它归结为应用程序的开发和部署.

您要做的是将产品的功能管理与版本管理相结合.

这当然是可行的(仅通过SCM)并且根据您的要求,它实际上可能适合您.

然而,在一段时间内,你最终将成为一个分支/合并汤.它不仅会增加维护和维护每个分支的时间和精力(并保持"主"和其他"分支"同步),它也会适得其反,因为每次有变化或新功能时,你都会花更多的时间计划如何使您的分支机构保持最新状态而不是实际功能.随着时间的推移,新员工对您的分支机构管理技术没有任何了解,并且最终由于各种原因而最终出现了可能想要创建自己的分支的分布式团队,这会变得更加复杂.

如果我建议,请保留一个版本的应用程序并实现启用/禁用"功能"的机制.这将使您的SCM更易于理解,实施和维护更清晰.

中间地带是核心模块的核心分支,然后每个子模块或特征是其独立的分支.任何人都可以安装核心模块,并根据需要/许可,他们可以从各自的分支机构安装单独的"功能".

希望这提供了一些清晰度.如果您有任何疑问,我将很乐意详细说明.