我正在尝试为一个四人小团队提出一个可靠的 SVN 存储库结构和分支策略。我们在任何时候都有四个主要项目和几个次要项目在开发中,并且项目之间经常存在一些重叠。我们当前的策略是完全低效的,包括将这些文件夹中的每一个(大约 15 个左右)放在一个版本化的“主干”文件夹下。这意味着每当我们进行分支时,我们都会对所有 15 个项目进行分支(更新工作副本并拉下一个分支大约需要 20 分钟,以透视这一点)。
主要问题是一些项目重叠,并且一个特性或任务需要在项目 A 和项目 B 中更改某些内容并不少见(所有这些项目都与同一个数据库通信并使用相同的数据库表;此外它们共享一个业务层,因此在一个项目中更改一个类会影响另一个),因为这些项目本质上都是一个“伞形”应用程序的相关部分。例如,对于主要项目,基本上有:
- 项目A:前端电商网站
- 项目 B:后端执行/管理系统
- 项目 C:前端站点的无品牌副本(相同的东西减去 CSS 样式并且功能较少)
- 项目 D:Web 服务 API
A 和 B 交织在一起,但 B 是一个软件即服务应用程序(我们充当我们自己的客户端),而 C 作为客户的前端(A 充当我们自己公司的前端,因为 C 本质上是A 具有较少的功能且没有公司特定的详细信息)。D 只能由客户访问,但我的最终目标是让 A、B 和 C 都通过 Web 服务使用 D 的功能(基本上是吃我们自己的狗粮)。
我们刚刚决定采用三周部署策略(这意味着我们每三周进行一次生产部署),而我们当前的 SVN 策略很麻烦,并且使得分支非常痛苦。
由于多个项目有重叠,将它们全部放在一个具有分支/标签/主干格式的项目文件夹下是否有意义,或者我们应该将它们视为单独的项目?也许结合一些,例如将 SaaS 前端/后端结合在一起,我们自己的网站和 Web 服务是分开的?
参与类似项目的人的任何建议或建议都会很棒。