centos6.5 svn服务端搭建

一、前言

Subversion是一个免费的开源的版本管理系统,它是作为CVS(Concurrent Versions System)的取代品出现的。本文简单介绍了Subversion在centos上的安装过程及其基本概念和使用方法。

 

二、安装

安装命令:

yum -y install subversion

安装完用命令:

svn –version

查看一下是否安装成功,如果成功则显示

svn, version 1.6.11 (r934486)
    compiled Aug 17 2015, 08:37:43

 

三、项目目录结构及导入

一般来说会在一部服务器上面管理多个项目,但是想让各个项目之间相互独立,这种情况最好为不同的项目建立不同的仓库进行管理。譬如现在有两个项目,名字分别为hello和world,接下来以hello为例子进行建仓和导入。

1. 建立本地工程的仓库

Subversion把工程的各个版本的数据集中放在一个仓库(repository)中。假定我们要建立一个本地工程,叫做hello,为了使用subversion对它进行版本管理,首先要为该工程建立一个仓库。

subversion安装后会生成一个~/.subversion目录,这里,我们将工程hello的数据仓库建立在~/.subversion/repos/hello目录。

[root@localhost ~] cd ~/.subversion/
[root@localhost .subversion] mkdir respos
[root@localhost .subversion] svnadmin create repos/hello
[root@localhost .subversion] ls –p repos/hello/
conf/  dav/  db/  format  hooks/  locks/  README.txt



2. 组建本地工程工作目录

假定工程hello的顶层目录为~/projects/hello(这里~代表/root),则应如下组建工程的工作目录:

~/projects/hello/branches
~/projects/hello/tags
~/projects/hello/trunk/
                       hello.c

/trunk目录是实际上的工程顶层目录,工程中的所有文件和文件夹都在该目录下组织。

[root@localhost ~]# cd projects/hello/
[root@localhost ~]# ls -p
          branches/  tags/  trunk/

关于标准目录结构:

trunk是主分支,是日常开发进行的地方。

branches是分支。一些阶段性的release版本,这些版本是可以继续进行开发和维护的,则放在branches目录中。又比如为不同用户客制化的版本,也可以放在分支中进行开发。

tags目录一般是只读的,这里存储阶段性的发布版本,只是作为一个里程碑的版本进行存档。

详情请参考:http://www.cnmiss.cn/?p=296

 

3. 将本地工程hello导入本地的Subversion的工程仓库

svn import ~/projects/hello/ file:///root/.subversion/repos/hello/ -m "initial improt" Adding /root/projects/hello/trunk Adding /root/projects/hello/trunk/hello.c Adding /root/projects/hello/branches Adding /root/projects/hello/tags Committed revision 1.

注意,完成导入后,原目录~/projects/hello并不转换为“工作副本(working copy)”,而且该项目已经转由该仓库接管,即该仓库中已经包含了首次导入的工程的所有信息,与源目录~/project/hello再无任何关系,我们完全可以删除这一目录而不必担心丢失工程项目数据。注意,如果源目录并不是一个“工作副本”,那么就无法用svn进行管理,在其中所作的任何变动都无法提交到仓库。
    要用subversion对工程进行版本管理,那么工程项目的开发必须在一个“工作副本”中进行,即首先要从仓库获取一个“工作副本”。 

 

4. 工程开发过程中的版本管理与控制

使用subversion对工程进行版本管理的一般流程如下:
    a)建立工程的数据仓库,并导入工程的最初版本(前面已经完成);
    b)从仓库获取一个“工作副本”(svn checkout,可以获取最新版本也可以获取以前的某个版本),在这个“工作副本”中进行工程开发,修改完毕将变动提交到仓库。
    下面简单介绍b)步骤。
    由于工程hello已经导入到仓库,因此原目录可以删除。我们删除原目录,并从仓库获取工程hello的一个“工作副本”(working copy);当然,如果你当心这样做会造成数据丢失,完全可以重新建立一个目录,将“工作副本”保存到那里。

[root@localhost projects]# rm -rf hello/[root@localhost projects]# svn checkout file:///root/.subversion/repos/hello/trunk hello //注意,我们用红色标出了"trunk",如果不指定这一目录,则会取出除工程源文件外的其他不必要的目录如branches和tags。

至此,我们在仓库根目录~/.subversion/repos建立了仓库hello,并将本地工程导入仓库中,最后在本地目录获取仓库的一个工作副本。可以同样用这个方法建立其他仓库。

 

四、权限管理及配置

新建一个仓库之后,在仓库目录下面(这里是~/.subversion/repos/hello/)会有一个conf目录,里面有三个文件,分别是

authz:权限配置文件

passwd:用户名口令文件

svnserve.conf:svn服务配置文件

这里,因为开发人员会参与多个项目,所以我们希望权限配置文件和用户口令文件是公用的,我的做法是在.subversion目录下新建多一个目录repos_conf,把authz和passwd文件复制过去,根据实际情况进行配置。

修改各个仓库下面的svnserve.conf文件,该文件配置项分为以下5项:

anon-access: 控制非鉴权用户访问版本库的权限。

auth-access: 控制鉴权用户访问版本库的权限。

password-db: 指定用户名口令文件名。

authz-db:指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。

realm:指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件

修改如下:

anon-access = noneauth-access = writepassword-db = /root/.subversion/repos_conf/passwdauthz-db = /root/.subversion/repos_conf/authz

然后以默认监听端口(3690)启动svn服务:

svnserve -d -r /root/.subversion/repos

参数-d表示以守护进程运行,-r后面接服务的根目录,如果需要绑定别的端口,则在后面加上--listen-port 端口号。

关闭服务

killall svnserve

注意,如果修改了svnserve.conf文件,需要重启服务,authz和passwd则不用。

 

五、总结

svn的搭建及配置流程总体如下:

1. 安装svn服务端

2. 按照标准目录结构创建本地工程目录

3. 将本地工程导入仓库

4. 删除原目录,在本地获取主分支的工作副本

5. 权限和口令文件配置,svnserve.conf配置

6. 启动svn服务

 

参考:

http://www.cnblogs.com/hitwtx/archive/2011/11/16/2251581.html

http://www.cnmiss.cn/?p=296

posted @ 2018-03-14 20:21  大师兄啊哈  阅读(415)  评论(0编辑  收藏  举报