Changeset

769 views

Published on

Version Control with Subversion. Internal training for newbies

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
769
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Changeset

  1. 1. Version control with Subversion<br />版本管理基础<br />ATA研发中心<br />
  2. 2. 目录<br />基础<br />Copy-Modify-Merge方案<br />基本工作流程<br />基本目录<br />分支与合并<br />Changeset概念<br />分支处理流程<br />Changeset & Merging<br />合并处理流程<br />Tags基线<br />
  3. 3. Copy-Modify-Merge方案<br />对比于Lock-Modify-Unlock,Copy-Modify-Merge方案更高效<br />所有的现代开发模式都使用Copy-Modify-Merge方案<br />Merge的代价并不如想象那么高<br />
  4. 4. 基本工作流程<br />Checkout – Modify-Commit<br />一次Commit尽量修改一个功能,或修复一个缺陷<br />可以通过选择文件的方式把一批修改分开多次Commit<br />通过”Refs #112”或”Fixes #112”关联本次Commit到一个功能或一个缺陷<br />
  5. 5. 基本目录<br />Trunk – 主干目录,保存最新主干代码<br />Branches – 分支目录,临时存放分支代码<br />Tags – 基线目录,永久存放发布的代码,永远不要在Tags里面提交修改<br />使用”svn copy”复制代码,不要人工拷贝/添加<br />“svn copy”不会产生额外的存储空间<br />
  6. 6. Trunk vs. Branches<br />Trunk和Branches都可能成为开发目录<br />主干默认保存最新的代码<br />分支有多种使用方法<br />功能分支 – 在分支上开发特定功能,完成后合并到Trunk<br />发布分支 – 对即将发布的版本创建分支,力求稳定。Trunk上可以继续开发新的功能<br />分支是临时的,用完后可以删除<br />
  7. 7. Changeset vs. Revision<br />一次Commit提交一个Changeset,产生一个Revision<br />Changeset是代码管理的最小单位<br />Changeset是代码合并的基础<br />Revision可以用来引用Changeset<br />Revision是一个数字<br />
  8. 8. Changeset包含什么<br />文件增加<br />文件删除<br />代码修改<br />文件移动<br />文件复制<br />对文件和目录的操作应尽量使用SVN功能,而不是直接操作,例如:删除、复制、移动、重命名等<br />
  9. 9. 分支处理流程<br />“svn copy”从trunk或tags目录把代码复制到branches<br />“svn checkout” 从branches获取复制的代码<br />修改代码<br />“svn commit”提交修改到分支<br />如果需要,执行合并<br />
  10. 10. Changeset& Merging<br />Cherry Picking – Merge的最基本使用方法<br />正确的Merge要求Changeset是有意义的,每次Commit应该是原子的<br />对于需要Merge的分支或其他目录,应该保持跟踪,持续的Merge代码,而不要等到修改多到无法控制<br />
  11. 11. 合并处理流程<br />“svn merge” 并入其他分支的修改<br />处理冲突<br />编译验证,测试验证<br />“svn commit”提交结果<br />重复上面步骤<br />
  12. 12. Tags基线<br />每个正式发布版本必须tag<br />充分利用Tags<br />Tags并不消耗存储<br />不要修改Tags,如果需要修改,”svn copy”到Branches,然后再修改Branches下面的代码<br />
  13. 13. END<br />QA time<br />

×