【发布时间】:2012-05-11 14:15:44
【问题描述】:
我正在尝试为一个四人小团队提出一个可靠的 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 服务是分开的?
任何参与类似项目的人的建议或建议都会很棒。
【问题讨论】:
-
你有没有考虑过使用 Git(git-scm.com) 代替 svn? GIT 的主要宣传功能之一是能够以比 svn 更简单的方式进行分支。希望这会有所帮助。
-
是的;我们之前也在评估 Mercurial,但是学习曲线被证明是一个问题,所以为了不要太快引入太多变化,我们被 SVN 困住了。尝试学习 Mercurial/Git 是“太难了”并导致了问题......
标签: .net svn project-structure branching-strategy