svn可以对我们的代码进行系统的管理。主要功能就是保存所有的历史版本,方便回退版本,查看修改记录,保存版本防止丢失。
理想状态下,希望svn上的每一个版本拿下来都是可以正确运行的。所以建议大家提交代码要少量多次,每次修改一个功能就马上提交,可以避免修改太多导致合并出错或者遗漏。(如果一次修改的太多,合并代码时花费半天一天时间也是很正常的)
一、常用命令
- svn checkout http://xxxx:
从svn服务器获取最新的版本 - svn log :查看所有日志
- svn log -l 4 : 查看最近的四条日志
- svn commit -m “修改记录”: 提交本地代码
- svn info:查看当前版本的svn信息,主要查看svn路径和工程版本号
- svn up:更新库上最新版本到本地。
- svn up -r 2014:将本地版本更新为r2014版本
- svn st: 相对于库上最新版本,显示本地修改了哪些文件
- svn st后会列出所有修改的文件
- svn revert aaa.txt 忽略对aaa.txt文件的修改,即未提交的修改都会被删除
- A:此文件是新增文件
- M:此文件内容修改
- D:此文件要删除
- ?:未知类型,可以根据需要,在本地将其删除,或者使用svn add,svn delete将其关联到库上
- svn add aaa.txt
- svn delete aaa.txt
二、svn提交建议
在多人共同修改同一个文件时很容易出现冲突。或者如xcode工程文件很复杂,容易将一些垃圾信息上传,所以建议svn目录和工作目录分开,使用比较工具合并代码,然后再提交。这样做虽然会浪费些时间,但可以最大限度保证提交代码的质量,在合并代码的时候还能review一下修改部分,发现一些错误。
根据我们现在的项目情况,建议操作流程如下:
- svn checkout 取下最新的版本(svn 版本)
- 将此版本复制一份到正在修改的工程下进行修改。(工作版本)
- 将svn版本更新(svn up)
- 使用比较工具将工作版本的修改合并到svn版本。合并完成后 svn st,确认所有修改的文件正确
- 在工程中添加删除文件都会修改工程文件,而工程文件不好合并,建议合并完代码后,在svn版本中打开工程文件,再执行一次删除或者添加文件的操作
- 在合并的时候有可能其他人已经提交了代码,所以在确认后再运行svn up,如果有冲突,将冲突代码下载下来,在工程中修改。然后再执行第四步
- 若没有冲突,使用svn commit -m “提交日志”将代码提交。
三、推荐工具
推荐几个比较好用的工具
windows:
tortoiseSVN,可以方便的查看修改的文件、提交日志、历史版本等。上面提到的svn up ,commit,log等命令在软件中都有菜单可以点击
beyondcompare3 一款非常优秀的二进制比较工具,可以比较任何文件,效率很高
mac
svn工具:versions,相比windows上的工具来说真是太难用了
命令行,上面提到的几个命令足以应付日常使用了,很方便,比那些工具好用太多了
比较工具:changes 目前只发现这一款还算可以,但效率就真不敢恭维了。还经常崩溃,聊胜于无吧
Xcode的代码比较,这个真是非常好用
希望以上建议能帮助大家正确的提交代码.有不对的地方请各位指正
我创建了一个QQ群,希望大家能本着互联网开放的心态,将遇到的问题和经验在群里分享,大家互相交流心得,共同提高。
群号:77311380