SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。svn服务器有2种运行方式:独立服务器和借助apache运行。两种方式各有利弊,用户可以自行选择。
集中式管理的工作流程如下图:
集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后开发,最后解决冲突,提交。所有的版本信息都放在服务器上。如果脱离了服务器,开发者基本上可以说是无法工作的。下面举例说明:
开始新一天的工作:
1、从服务器下载项目组最新代码。
2、进入自己的分支,进行工作,每隔一个小时向服务器自己的分支提交一次代码(很多人都有这个习惯。因为有时候自己对代码改来改去,最后又想还原到前一个小时的版本,或者看看前一个小时自己修改了哪些代码,就需要这样做了)。
3、下班时间快到了,把自己的分支合并到服务器主分支上,一天的工作完成,并反映给服务器。
这就是经典的svn工作流程,从流程上看,有不少缺点,但也有优点。
这里我讲的是SVN跟apache搭配:
#yum install httpd httpd-devel mod_dav_svn subversion mod_ssl
对subversion.conf进行配置,由于篇幅问题,把注释信息删了。
很多文件这不知道怎么填,就按照上图的实例,先对着写,下面我会指明为什么这么写:
查看apache的用户:
注意端口: Listen 80 (若80被占用可以更改成其他端口,如8090)
User apache
Group apache
这是运行Apache的用户和组,都是apache。
[root@node httpd]# id apache
uid=48(apache) gid=48(apache) groups=48(apache)
开始创建SVN目录:
根据下图,也就是我们刚才配置的subversion.conf文件创建
添加用户和密码:
配置权限:
启动SVN:
十分抱歉前面subversion.conf有一部分写错了:
Httpd启动比较慢,他在加载模块
[ OK ]
[root@node ~]# vim /etc/httpd/conf.d/subversion.conf
[root@node ~]# chown -R apache.apache /alidata1/svn #修改svn目录的属主属组为apache
[root@node ~]# chmod -R 700 /alidata1/svn #修改权限让其他人不可读
[root@node ~]# svnserve -d -r /alidata1/svn/data #启动SVN,指定svn目录,并在后台运行
[root@node ~]# service iptables stop #iptables和selinux关闭,selinux 要SELINUX=disabled
[root@node ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
SVN:
在浏览器输入:ip:port/svn即可见到弹框:
剩下的需要
这个软件来进行完成,在这就不描述了。
注意:SVN最容易出错的地方就在,权限文件配置上,USER名字定格写,不能有空白行,等号两边要有一个空格。
原文地址:http://magine356wj.blog.51cto.com/2664956/1638124