简介
VisualSVN 是一款Windows下免费的SVN服务器图形化管理工具(工程目录创建(truck\tags\branches)、Group管理、User管理、权限分配),使得配置SVN仓库异常简单,无需注册一个随系统启动的服务脚本。可以把svn当成备份服务器,它可以帮你记住每一次上传到服务器的档案内容,并且自动的赋予每一次变更一个版本。
为什么要使用svn
备份工作档案是十分重要的,因为计算机上的硬盘不可能随时都是安全的,要居安思危。版本控制十分重要,因为我们不能保证自己手上的代码或者文档一定就是最新的。团队之间的数据同步非常重要。数据应该是安全的、传输高效的,以及团队之间应该是资源共享的。
使用方法
trunk为主开发目录,branches为分支开发目录,tags为tag存档目录(不允许修改)。但是具体这几个目录应该如何使用,svn并没有明确的规范,更多的还是用户自己的习惯。对于这几个开发目录,一般的使用方法有两种。
第一种方法,使用trunk作为主要的开发目录(我们这次的教务系统开发就是使用的这种方法)
一般的,我们的所有的开发都是基于trunk进行开发,当一个版本/release开发告一段落(开发、测试、文档、制作安装程序、打包等)结束后,代码处于冻结状态(人为规定,可以通过hook来进行管理)。此时应该基于当前冻结的代码库,打tag。当下一个版本/阶段的开发任务开始,继续在trunk进行开发。
此时,如果发现了上一个已发行版本(Released Version)有一些bug,或者一些很急迫的功能要求,而正在开发的版本(Developing Version)无法满足时间要求,这时候就需要在上一个版本上进行修改了。应该基于发行版对应的tag,做相应的分支(branch)进行开发。
第二种方法,在每一个release的branch中进行各自的开发,trunk只做发布使用。
这种开发模式当中,trunk是不承担具体开发任务的,一个版本/阶段的开发任务在开始的时候,根据已经release的版本做新的开发分支,并且基于这个分支进行开发。
设置
此外,在开发中,还有一些文件是我们不希望被上传的,svn为我们提供了这样的功能设置。我们可以在svn的settings里面这样设置:
针对.net项目,典型的设置可以如下(参考):
*.opt *.ncb *.user *.suo *.plg *.pch *.idb *.pdb *.scc *.obj *.o *.bin *.out *.ilk *.aps debug release output Tmpout *.clw *.bak
避免和解决冲突
团队开发难免会有代码冲突,正确使用svn可以轻松避免和解决冲突。每天开始工作以前就先更新一遍代码,然后开始工作。当完成了自己的任务以后,在本地运行成功,在提交代码之前,再一次更新代码,并将自己为了做测试而暂时修改的代码还原,更新代码以后再次生成解决方案并且运行成功,这个时候就可以提交了。提交的时候要有注释,注明自己完成或者修改了那里,对自己的代码负责。
当更新的时候有冲突怎么办?首先看看是自己负责的模块吗,如果不是就可以直接使用他人代码,如果是自己的负责的模块就要在报冲突的那一行上面右击,点击编辑,进去看看到底是哪些代码冲突了,决定是用自己的代码还是使用svn上的代码。这样解决完了以后就可以点击已解决的标记。这样更新下来的代码就不会有错误了。提交前的更新非常重要,但是往往由于匆忙而忘记,这样就容易造成代码冲突。这一点是需要特别注意的。
总结
svn的使用可以解决团队开发中的代码不一致问题,保证每个人手里的代码都是最新的,都是正确的,同时也有利于团队内部的资源共享。更重要的是代码的版本控制。