SVN简介
SVN的全称是Subversion,即版本控制系统。它是最流行的一个开放源代码的版本控制系统(以前,现在是Git
)。作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个中央资料档案库(Repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样就可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subversion是一个通用的系统,可用来管理任何类型的文件,其中包括程序源码。
SVN采用客户端/服务器体系,项目的各种版本都存储在服务器上,程序开发人员首先将从服务器上获得一份项目的最新版本,并将其复制到本机,然后在此基础上,每个开发人员可以在自己的客户端进行独立的开发工作,并且可以随时将新代码提交给服务器。当然也可以通过更新操作获取服务器上的最新代码,从而保持与其他开发者所使用版本的一致性。
SVN的客户端有两类,一类是基于Web的WebSVN等,另一类是以Tortoise SVN为代表的客户端软件。前者需要Web服务器的支持,后者需要用户在本地安装客户端,两种都有免费的开源软件供使用。SVN存储版本数据也两种方式:BDB(一种事务安全型表类型)和FSFS(一种不需要数据库的存储系统)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。
SVN一些概念
- repository(源代码库):源代码统一存放的地方
- Checkout(提取):当你手上没有源代码的时候,你需要从repository
checkout
一份 - Commit(提交):当你已经修改了代码,你就需要
Commit
到repository - Update (更新):当你已经Checkout了一份源代码,
Update
一下你就可以和Repository上的源代码同步,你手上的代码就会有最新的变更 - reverted (回退): 当我们想放弃对文件的修改,可以使用
revert
操作将撤销任何文件或目录里的局部更改。
日常开发过程其实就是这样的(假设你已经Checkout并且已经工作了几天):Update(获得最新的代码) –>作出自己的修改并调试成功 –> Commit(大家就可以看到你的修改了) 。
如果两个程序员同时修改了同一个文件呢, SVN 可以合并这两个程序员的改动,实际上SVN管理源代码是以行为单位的,就是说两个程序员只要不是修改了同一行程序,SVN都会自动合并两种修改。如果是同一行,SVN 会提示文件 Conflict, 冲突,需要手动确认。
工作中使用流程
(1)固定打包时间,可以选择早上上班的时候和晚上下班的时候。(方便组员及时上传代码)
(2)让组员以正常可运行的功能块进行上传,并且必须记录日志。(防止无法编译)
(3)多个组员共同完成的关联功能应在完成后同步上传。(防止该功能执行时出现问题,不过可能会导致早完成功能的组员未上传代码逐渐累计过多导致其进一步开发相对困难的问题)
(4)打包时以上传的日志为准,如果有未上传的功能代码应及时告知负责人,并延后发包。(就是打包的人会麻烦一些,需要核对功能,延后发包还有加班的可能)
可视化工具
TortoiseSVN下载