zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    利用pyinotify监控文件内容,像tailf命令但比它更强
    AWS SDK for C++调用第三方S3 API
    Windows 10恢复Shift+右键打开命令提示符窗口
    TP-LINK WR841N V8刷OpenWRT
    Build subversion 1.8 with SSL on OS X Yosemite
    OpenWrt自定义和官方一样的固件
    Windows 10下通过蓝牙连接iPhone个人热点进行共享上网
    Broadcom有线网卡在Windows 8/8.1/10下使用系统自带驱动会断网的解决办法
    BCM94352HMB蓝牙BCM20702A0在Ubuntu 14.04下的驱动方法
    Spring Boot 发送邮件
  • 原文地址:https://www.cnblogs.com/harrymore/p/8569838.html
Copyright © 2011-2022 走看看