SVN Apache Subversion
SVN 仓库目录结构 Repository:
+-trunk
+-branches
+-tags
truck(主线):是用来做主方向开发的,新功能的开发应放在主线中,当模块开发完成后,需要修改,就用 branch。
branch(分支):分支开发和主线开发是可以同时进行的,也就是并行开发,分支通常用于修复 bug 时使用。
tag(标记):用于标记某个可用的版本,可以标记已经上线发布的版本,也可以标记正在测试的版本,通常是只读的。
假设要开发一个新项目 MyApp,开发周期如下:
- 在主线 trunk 上开发,测试通过,上线
新建目录 1.0,提交到 SVN,并标记为 tag。位置为 /tags/1.0/MyApp(即 1.0 版本)
继续在主线 trunk 上开发下一阶段的新需求,开发中...
突然发现了一个线上的 bug,需要紧急修复并上线
在 tags/1.0 下的 MyApp 打一个分支 branch。位置为 /branches/MyApp
打开分支 /branches/MyApp 中的代码,修改代码,解决 bug,测试通过后,提交,上线
再将 branches/MyApp/ 打个 tag 到 1.0.1 目录下。位置为 /tags/1.0.1/MyApp(即 1.0 的修复版本)
由于主线 trunk 也是同时开发,因此需要将 branch 合并到 trunk 上,再将 trunk 合并到 branch 上
主线 trunk 继续开发
Git 与 SVN 的对应关系
| SVN | Git |
|---|---|---|
| trunk/ | master (refs/heads/master) |
| branches/ | refs/heads/ |
| tags/ | refs/tags/ |
引用:
SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤
SVN 版本管理:兩種開發模式