基于CentOS Linux搭建svn服务器在研发产品时的应用

来源 :电子世界 | 被引量 : 0次 | 上传用户:daidaide21
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘要】subversion(简称svn)是近几年崛起的版本管理软件,是cvs的接班人。目前绝大多数开源软件都使用svn作为代码版本管理软件,它可以有效的解决代码管理混乱、代码冲突、代码整合期间引发的bug和代码拥有者的权限控制。
  【关键词】centos;Linux;svn;搭建服务器
  1.引言
  在高速发展的信息时代,人们对于高效率的开发越来越关注。当企业需要研发新产品时,市场部往往要求研发的周期越短越好,因为产品越早发布,在市场中的优势就越明显,因此研发周期就会尽量的缩短。但在短时间内要开发出新产品,就需要研发人员的协同工作。而在开发的周期中,研发人员增多,研发人员交付的文件就非常容易产生问题:(1)研发团队中的几个人同时对一个文件进行修改,最终发现修改的冲突而不得不放弃其他人的修改成果,造成了时间的浪费。(2)修改好的文件保存之后,又想把文件恢复到修改前的状态。(3)在自己的项目中发现了问题,想要分析问题是哪个文件版本产生的。(4)想比较一个文件不同版本时的区别。要解决这些问题,就需要一个比较好的版本控制工具,因此我们推荐svn。
  2.svn的简介和工作原理
  svn的工作方式是C/S模式,其中C为客户端,S为服务器端。svn服务器有两种运行方式:独立服务器和借助于apache,svn://或http://,svn客户端tortoisesvn。
  svn的基本工作原理:在一台服务器上建立一个源代码库,库里可存放许多不同项目的源程序。由有源代码库管理员统一管理这些源程序。每个用户在使用源代码库之前,首先要把源代码库里项目文件下载到本地,然后用户可以在本地修改,修改完成后用svn命令进行提交,源代码库统一管理修改。svn版本控制解决了:(1)代码管理混乱;(2)解决代码冲突困难;(3)在代码整合期间引发bug;(4)无法对代码的拥有者进行权限控制;(5)项目不同版本的发布困难。
  svn工作原理示意图如图1所示:
  图1 svn工作原理图
  subversion目录说明:
  *dav目录:是提供apache与mod_dav_svn使用的目录,让他们存储内部数据
  *db目录:就是所有版本控制的数据存放文件
  *hooks目录:放置hook脚本文件的目录
  *locks目录:用来放置subversion见艰苦锁定数据的目录,用来追踪存取文件库的客户端
  *format文件:是一个文本文件,里面只放了一个整数。表示当前文件库配置的版本号
  *conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)
  3.svn服务器搭建
  系统环境CentOS 6.0最小化安装(关闭iptables和selinux)+ssh+yum
  (1)安装必须的软件包:yum install subversion mysql-server httpd mod_dav_svn mod_perl sendmail wget gcc-c++ make unzip perl* ntsysv vim-enhanced
  说明:
  subversion(svn服务器)
  httpd mod_dav_svn mod_perl(用于支持WEB方式管理SVN服务器)
  sendmail(用于配置用户提交代码后发邮件提醒)
  wget gcc-c++ make unzip perl*(必备软件包)
  (2)基本的svn服务器配置
  ①新建一个目录用于存储SVN所有文件
  # mkdir/home/svn
  ②新建一个版本仓库
  # svnadmin create/home/svn/svntest
  ③初始化版本仓库中的目录
  # mkdir temp temp/server temp/client temp/test(建立临时目录)
  # svn import temp/file:///home/svn/svntest-m“初始化SVN目录”
  # rm-rf temp(删除临时建立的目录)
  ④添加用户
  要添加SVN用户非常简单,只需在/home/svn/svntest/conf/passwd文件添加一个形如“username=password”的条目就可以了。为了测试,我添加了如下内容:
  [users]
  pm=pm_pw
  server_group=server_pw
  client_group=client_pw
  test_group=test_pw
  ⑤修改用户访问策略
  /home/svn/svntest/conf/authz记录用户的访问策略,以下是参考:
  [groups]
  svntest_p=pm
  svntest_s=server_group
  svntest_c=client_group
  svntest_t=test_group
  [svntest:/]
  @svntest_p=rw
  * =
  [svntest:/server]
  @ svntest _p=rw
  @ svntest_s=rw
  * =
  [svntest:/client]
  @ svntest_p=rw   @ svntest_c=rw
  * =
  [svntest:/doc]
  @ svntest_p=rw
  @ svntest_s=r
  @ svntest_c=r
  @ svntest_t=r
  * =
  说明:以上信息表示,只有svntest_p用户组有根目录的读写权。r表示对该目录有读权限,w表示对该目录有写权限,rw表示对该目录有读写权限。最后一行的* =表示,除了上面设置了权限的用户组之外,其他任何人都被禁止访问本目录。
  ⑥修改svnserve.conf文件,让用户和策略配置升效。
  svnserve.conf内容如下:
  [general]
  anon-access=none
  auth-access=write
  password-db=/home/svn/svntest/conf/passwd
  authz-db=/home/svn/svntest/conf/authz
  ⑦启动服务器
  #svnserve-d-r/home/svn
  注意:如果修改了svn配置,需要重启svn服务,步骤如下:
  # ps-aux|grep svnserve
  # kill-9 ID号
  # svnserve-d-r/home/svn
  4.配置SVN服务器的HTTP支持
  (1)转换SVN服务器的密码
  由于svn服务器的密码是明文的,HTTP服务器不与支持,所以需要转换成HTTP支持的格式。笔者写了一个Perl脚本完成这个工作.
  脚本内容如下:
  # cd/home/svn/svntest/conf/
  # vim PtoWP.pl
  #!/usr/bin/perl
  # write by huabo,2009-11-20
  use warnings;
  use strict;
  #open the svn passwd file
  open(FILE,"passwd")or die("Cannot open the passwd file!!!n");
  #clear the apache passwd file
  open(OUT_FILE,">webpasswd")or die("Cannot open the webpasswd file!!!n");
  close(OUT_FILE);
  #begin
  foreach(){
  if($_=~m/^[^#].*=/){
  $_=~s/=//;
  `htpasswd-b webpasswd $_`;
  }
  }
  # chmod +x PtoWP.pl
  # ./PtoWP.pl
  Adding password for user pm
  Adding password for user server_group
  Adding password for user client_group
  Adding password for user test_group
  现在目录下会多一个webpasswd文件。
  (2)修改httpd.conf,添加关于SVN服务器的内容
  编辑/etc/httpd/conf/httpd.conf,在最后添加如下信息:
  
  DAV svn
  SVNPath/home/svn/svntest/
  AuthType Basic
  AuthName"svn for svntest"
  AuthUserFile/home/svn/svntest/conf/webpasswd
  AuthzSVNAccessFile/home/svn/svntest/conf/authz
  Satisfy all
  Require valid-user
  

  (3)修改svn目录的属主为apache帐号:chown-R apache.apache/home/svn/svntest/
  注意:原文少了这一步,会出权限问题。
  图2 svn登陆页面
  (4)重启Web服务器:
  # /etc/init.d/httpd restart
  Stopping httpd:[FAILED]
  Starting httpd:[OK]
  (5)用浏览器访问http://10.12.72.70/svntest测试
  测试结果如图2所示。
  特别说明:如果输入正确的用户名和密码,不能够正确登陆,建议关闭关闭iptables和selinux。
  5.结束语
  目前svn服务器已经在我公司投入使用,它的使用有效解决了多人研发产品时对项目文件修改与保存时存在的:代码管理混乱、解决代码冲突困难、在代码整合期间引发bug、无法对代码的拥有者进行权限控制、项目不同版本的发布困难等问题,有效提升了工作效率,缩短了产品的开发周期。
其他文献
荣县位于四川省西南部,幅员面积1 609 km^2,辖27个乡镇、296个村,总人口69.29万人,其中农业人口52.15万人,总耕地面积6.57万hm^2,常年生产粮食41.4万t,是全国产粮大县、全省
峨边彝族自治县月包村是个1000多人的小村子,位于峨边县城北部的背风山腰,与县城直线距离不足2千米,由于背风山陡峭难行,山下是成昆铁路隧道,湍急的大渡河将背风山和县城拦腰阻断,
目的探讨不同给药方案治疗糖尿病合并高血压的临床疗效及作用机制。方法将我院收治的153例糖尿病合并高血压患者按照分层随机分组法分为观察组和对照组。对照组给予降糖药及