svn使用小结
经过两个多月的开发的摸索,对svn有了一套自己的使用经验。
一直习惯使用印象笔记帮助自己归纳知识要点,在这里直接将关于svn使用的笔记内容贴出。由于平时只是为了自我提醒回顾用,可能内容不够详细。
如果不理解某些概念,可以借助google了解。希望对有过svn的尝试,处于初级使用阶段的朋友有些帮助。
另外,学习的过程就是不断的尝试:自己搭一个test项目,多尝试几次,才是捷径~
欢迎大家交流。
PS:笔者使用mac下的smartsvn6.6版本,做ios的多人协同开发。
SVN原理:拷贝-修改-合并
关键概念:Repository(branch;tag;trunk) -- Working Copy
branch、 tag 和 trunk注意事项:
1.创建一个项目时,选择拥有 branch、 tag 和 trunk;
2.checkout时,只checkout项目的trunk部分【之后在同一个工作目录下可以switch到各个tag或branch】
3.发布版本设定tag。规定不能在tag上做修改,即其为只读。
4.每个子任务在提交到trunk前,都需要在branch中完成。每个开发者拥有自己的Branch。修改过程为:switch到对应的branch【在smartsvn中switch branch时,需要注意branch所对应的版本号,如果用head,则可能被最新的版本代码覆盖掉了】。
5.在对应branch里完成工作后,需要merge回trunk:先要switch到trunk的工作副本,然后merge,merge的target则为相应的branch的最新版.
其他注意事项:
1.删除文件、增加文件需要在svn客户端显式的执行对应的操作。
2.可以禁止某些自动生成的文件的同步;
3.在iOS下,新建文件、修改文件名等操作不可以多个用户同时进行(可能产生冲突的情况下,建议由一个人统计所有需求,统一执行操作),否则容易出现无法恢复的错误。原因是工程文件会对其建立索引,合并时造成难以恢复的冲突。
参考资料:
《SVN权威指南》 http://i18n-zh.googlecode.com/svn/www/svnbook-1.4/index.html
smartsvn中的Tag Branch Trunk操作介绍: http://www.smartsvn.com/documentation/commands.tag-branch-layout
项目中的tag branch trunk使用: http://developer.51cto.com/art/201005/201718.htm