一、SVN定义
二、SVN分类:如下图
SVN是开源的版本控制系统,它包括客户端和服务器。图中的蓝色字体表示服务端和客户端常用的版本。
1)服务端版本又分为:Subversion版本和VisualSVN Serve版本。
对于新手而言,个人比较赞同用VisualSVN Server,它是具备图形界面的SVN Server,使用起来比较方便。
为什么要用VisualSVN Server ,而不用Subversion?
因为如果直接使用Subversion,那么在Windows 系统上,要想让它随系统启动,就要封装SVN Server为windws service,还要通过修改配置文件来控制用户权限,另外如果要想以Web方式【http协议】访问,一般还要安装配置Apache,如果是新手,岂不是很头痛?而VisualSVN Serve集成了Subversion和Apache,省去了以上所有的麻烦。安装的时候SVN Server已经封装为windws service,Apache服务器的配置也只是在图像界面上,指定认证方式、访问端口等简单操作;另外,用户权限的管理也是通过图像界面来配置。(此段引自《
http://baike.baidu.com/view/9636511.htm
》)
2)客户端工具有VisualSVN和TortoiseSVN.
VisualSVN是收费的; TortoiseSVN是免费的,它可以代替VisualSVN。
安装SVN时,先安装好服务端,再安客户端。
如何验证SVN服务器是否安装好?
开启命令行,输入svn,如果出现“使用‘svn help’得到用法”,说明SVN服务器已装好。
三、SVN服务器搭建:
1)安装好SVN后,第一步就是要建立核心仓库(Repository):
在Windows下,要建立仓库。这个仓库对应我们Windows操作系统上的,其实就是一个目录。
比如,如果我想把这个仓库建立在D盘的Share目录下.
用svnadmin命令,后面敲help可以得到它的用法。
要建库用的是Create子命令。
这样:在D盘的Share目录下建立一个目录svnrepo
svnrepo目录文件里面会有4个目录文件:
cong,里面装的全是配置文件。
db:是存储版本的地方。
hooks:做操作的时候,它的上面打的一些钩子,即回调函数。
locks:在某些文件或某些分支上加锁的时候要用到的文件。Format:版本;REDEME:读一下。
2)权限设置
打开:svnrepo→conf→svnserver.conf 。
svnserver.conf这个文件控制着SVN的一些常用设置。
在你的项目里,有几个人,你就设置几个用户,并给他们设置不同的密码。这样用户就添加完了。
3)启动服务器
启动服务器的方式有2种:
3.1)用命令svnserver -d -r + "目录名称"
-d:后台运行
-r:以超级管理员或超级用户的方式去运行。
目录名称:可以写全路径,如果正好在当前服务器下,也可以写相对路径。
这个窗口不能关掉,这个窗口关掉了,服务器就关掉了。
3.2)SVN服务器的第二种运行方式:apache http
在真正的开源项目做开发的时候,是和apache服务器结合在一起的,一般要用http的方式来去访问的。
上面写的搭建SVN服务端的内容可以总结为三点:a.建库 b.设置库权限 c.库启动。
用图表示如下。
四、 SVN的工作流程
集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后开发,最后解决冲突,提交。所有的版本信息都放在服务器上。如果脱离了服务器,开发者基本上可以说是无法工作的。下面举例说明:
开始新一天的工作:
1、从服务器下载项目组最新代码。
2、进入自己的分支,进行工作,每隔一个小时向服务器自己的分支提交一次代码(很多人都有这个习惯。因为有时候自己对代码改来改去,最后又想还原到前一个小时的版本,或者看看前一个小时自己修改了哪些代码,就需要这样做了)。
3、下班时间快到了,把自己的分支合并到服务器主分支上,一天的工作完成,并反映给服务器。
这就是经典的svn工作流程,从流程上看,有不少缺点,但也有优点。
缺点
1、服务器压力太大,数据库容量暴增。
2、如果不能连接到服务器上,基本上不可以工作,看上面第二步,如果服务器不能连接上,就不能提交,还原,对比等等。
3、不适合开源开发(开发人数非常非常多,但是Google app engine就是用svn的)。但是一般
集中式管理
的有非常明确的权限管理机制(例如分支访问限制),可以实现分层管理,从而很好的解决开发人数众多的问题。
优点
1、管理方便,逻辑明确,符合一般人思维习惯。
2、易于管理,集中式服务器更能保证安全性。
3、代码一致性非常高。
4、适合开发人数不多的项目开发。
博客推荐:刘佳翰——SVN使用前的必备工作 http://blog.csdn.net/liujiahan629629/article/details/9569935?reload