zoukankan      html  css  js  c++  java
  • linux下搭建svn服务器

    一、SVN安装
    1.安装包
    $ sudo apt-get install subversion

    2.添加svn管理用户及subversion组
    $ sudo adduser svnuser
    $ sudo addgroup subversion
    $ sudo addgroup svnuser subversion 

    3.创建项目目录
    $ sudo mkdir /home/svn
    $ cd /home/svn
    $ sudo mkdir myproject
    $ sudo chown -R root:subversion myproject

    4.创建SVN文件仓库
    $ sudo svnadmin create /home/svn/myproject

    $ sudo chmod -R g+rws myproject

    注:

    如果上面这个命令在创建SVN文件仓库之前运行,你可能在后续Check in的时候遇到如下错误:

    Can't open '/home/svn/myproject/db/txn-current-lock': Permission denied

    查看txn-current-lock文件的权限和用户以及组信息,应该类似于:

    $ ls -l /home/svn/myproject/db/txn-current-lock
    -rw-rwSr-- 1 root subversion  0  2009-06-18  15:33  txn-current-lock

    5.本地访问方式及项目导入:

    $ svn co file:///home/svn/myproject
    或者
    $ svn co file://localhost/home/svn/myproject
    * 注意:
    如果您并不确定主机的名称,您必须使用三个斜杠(///),而如果您指定了主机的名称,则您必须使用两个斜杠(//).
    //--
    下面的命令用于将项目导入到SVN 文件仓库:
    $ sudo svn import -m "New import" /home/svn/work file:///home/svn/myproject --no-ignore
    一定要注明导入信息

    //--------------------------//
    6.访问权限设置
    修改 /home/svn/myproject/conf目录下:
    svnserve.conf 、passwd 、authz三个文件,行最前端不允许有空格
    //--
    编辑svnserve.conf文件,把如下两行取消注释
    password-db = password
    authz-db = authz

    //补充说明
    # [general]
    #anon-access = read
    auth-access = write
    password-db = passwd
    其中 anon-access 和 auth-access 分别为匿名和有权限用户的权限,默认给匿名用户只读的权限,但如果想拒绝匿名用户的访问,只需把 read 改成 none 就能达到目的。

    //--
    编辑/home/svn/myproject/conf/passwd 如下:
    [users]
    mirze = 123456
    test1 = 123456
    test2 = 123456
    //--
    编辑/home/svn/myproject/conf/authz如下
    [groups]
    admin = mirze,test1
    test = test2
    [/]
    @admin=rw
    *=r
    这里设置了三个用户mirze,test1,test2密码都是123456
    其中mirze和test1属于admin组,有读和写的权限,test2属于test组只有读的权限

    7.启动SVN服务
    svnserve -d -r /home/svn
    描述说明:
    -d 表示svnserver以“守护”进程模式运行
    -r 指定文件系统的根位置(版本库的根目录),这样客户端不用输入全路径,就可以访问版本库
    如: svn://192.168.12.118/myproject

    这时SVN安装就完成了.

    局域网访问方式:
    例如:svn checkout svn://192.168.12.118/myproject


    二、HTTP:// [apache]
    1.安装包 [已安装subversion]
    $ sudo apt-get install libapache2-svn

    创建版本仓库:
    sudo svnadmin create /目录地址
    目录地址必须存在,这个就是保存版本仓库的地方,不同的版本仓库创建不同的文件夹即可,比如:
    sudo svnadmin create /home/svn/project
    本来/home/svn/project这个目录下什么都没有,执行下面的命令之后再去看一下,多出一些文件和文件夹,我们需要操作的是conf这个文件夹,这个文件夹下有一个文件,叫做passwd,用来存放用户名和密码。
    然后把这个版本仓库目录授权给apache读写:
    sudo chown -R www-data:www-data /目录地址
    然后来到打开apache配置文件:
    sudo gedit /etc/apache2/mods-available/dav_svn.conf

    加入如下内容:
    <Location /project>
    DAV svn
    SVNPath /home/svn/project
    AuthType Basic
    AuthName “myproject subversion repository”
    AuthUserFile /home/svn/project/conf/passwd
    #<LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
    #</LimitExcept>
    </Location>

    location说的是访问地址,比如上述地址,访问的时候就是
    http://127.0.0.1/project
    其中有两行被注释掉了,以保证每次都需要用户名密码。
    最后一步就是创建访问用户了,建议将用户名密码文件存放在当前版本仓库下conf文件夹下,这样版本仓库多的时候无至于太乱。
    因为conf文件夹下已经存在passwd文件了,所以直接添加用户:
    sudo htpasswd -c /home/svn/project/conf/passwd test
    然后输入两遍密码,laoyang这个用户就创建好了。
    打开/home/svn/project/conf/passwd这个文件,会开到形如如下形式的文本:
    test:WEd.83H.gealA //后面是加密后的密码。
    创建以后,再次需要往别的版本仓库添加这个用户,直接把这一行复制过去就可以了。
    重启apache就可以了。
    sudo /etc/init.d/apache2 restart



    三、忽略文件

    1.svn:ignore
    忽略所有.o文件
    svn propset svn:ignore "*.o" .
    忽略tmp文件夹
    svn propset svn:ignore tmp .
    忽略多个文件和文件夹(.o,*.lib,*.la等),新建svnignore.txt,内容如下
    tmp
    vmlinux.lds
    romfs
    modules.order
    modules.builtin
    bin
    mconf
    lxdialog
    docproc
    split-include
    fixdep
    conf
    autoconf.h
    compile.h
    bounds.h
    System.map
    built_time
    .sgbuilt_user
    .tmp_versions
    .depend
    *.out
    *.o
    *.a
    *.lib
    *.la
    *.bin
    *.ko
    *.*.*
    .*.*
    .*.*.*
    执行
    svn propset svn:ignore -F svnignore.txt .(svn propset -R svn:ignore -F svnignore.txt .)
    svn commit -m "set ignore"
    现在可以看到该忽略的文件都忽略了。
    调出图形化忽略界面
    export SVN_EDITOR=vim
    svn propedit svn:ignore .

    四、可能出现的问题:
    1.新建组和为用户添加组时,需要重新登录Shell才能生效。
    2.commit时出现了Permission denied错误,这时需要在库目录下sudo chmod 777 -R /home/svn/myproject/db设置权限。

  • 相关阅读:
    IO
    多线程
    常用类
    异常
    接口
    面向对象
    面向对象
    学习数组
    for的嵌套循环
    XML:是什么?怎样工作的?可以做什么?将来的发展有会怎样?
  • 原文地址:https://www.cnblogs.com/chengliu/p/3636386.html
Copyright © 2011-2022 走看看