2021-02-19 linux svn服务器迁移,svn同步版本库,提交时报错could not begin a transaction

  1. root用户登录,通过yum安装subversion
    yum install -y subversion

     

  2. 创建一个文件夹作为svn仓库并初始化

    mkdir /home/svn
    svnadmin create /home/svn

     

  3. 跳转到svn的conf文件夹下,添加用户,添加用户权限,修改svnserve.conf文件

    cd /home/svn/conf
    vi passwd
    

    打开后如图,按键盘上的i键即可编辑,添加账号密码,小键盘数字键不能用.完事之后,按Esc退出编辑模式输入(一定要有冒号):wq! 保存退出.如果不小心编辑错了,重新打开.直接:q!不保存退出,在重新vi 打开文件编辑即可.同样命令编辑authz将下图中红圈标注位置的井号和空格删除后保存退出即可.

  4. 关闭防火墙并启动svn.

    systemctl stop firewalld //关闭当前防火墙
    systemctl disable firewalld //开机不启动防火墙
    svnserve -d -r /home/svn  //启动svn
    ps -ef|grep svn   //查看svn是否启动

    出现下图表示已经成功启动,在客户端通过svn://你的服务器的id即可访问

  5. svn搭建完毕后,复制/home/svn/hooks下的名为pre-revprop-change.tmpl文件,赋权限777

    cd /home/svn/hooks
    cp pre-revprop-change.tmpl pre-revprop-change
    chmod 777 pre-revprop-change
    ll

    出现下表示成功, 修改pre-revprop-change最后一行exit为0.

  6. 同步初始化你的svn仓库.

    svnsync init file:///home/svn http://192.168.3.60/svn/repository
    //可以通过http方式,也可以通过svn方式,取决于你的svn原服务器的访问方式
    svnsync init file:///home/svn svn://192.168.3.60/svn/repository
    //会提示输入账号密码,输入你原来svn 的账号密码即可
    

     

  7. 同步svn版本库

    svnsync sync file:///home/svn

    出现下图表示正在同步,如果版本库较大,时间会很久,耐心等待即可.

配置svn为http访问

  1. 安装apache支持svn

    yum install -y httpd httpd-devel mod_dav_svn
    //设置开机启动
    systemctl enable httpd.service
    //启动apache虚拟主机
    systemctl start httpd.service
    //查看状态
    systemctl status httpd.service
    //查看apache版本
    httpd -v

     

  2. 创建账号密码认证

    htpasswd -cbm /home/svn/conf/http_passwd test01 test01
    htpasswd -bm /home/svn/conf/http_passwd test02 test02
     
    ​-c:创建一个加密文件;
    -n:不更新加密文件,只将加密后的用户名密码显示在屏幕上;
    -m:默认采用MD5算法对密码进行加密;
    -d:采用CRYPT算法对密码进行加密;
    -p:不对密码进行进行加密,即明文密码;
    -s:采用SHA算法对密码进行加密;
    -b:在命令行中一并输入用户名和密码而不是根据提示输入密码;
    ​-D:删除指定的用户。

     

  3. 设置svn关联的配置文件(没有的话新建一个)

    vi /etc/httpd/conf.d/svn.conf
    //以下为需要写入的内容
    LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule authz_svn_module modules/mod_authz_svn.so
    <Location /你的访问路径>
        DAV svn
        SVNPath /home/svn
        AuthType Basic
        AuthName "Authorization Realm"
        AuthUserFile /home/svn/conf/httpdPasswd
        AuthzSVNAccessFile /home/svn/conf/authz
        Satisfy all
        Require valid-user
    </Location>
    

     

  4. 改变svn仓库文件的所有者

    chown -R apache:apache /home/svn

  5. 将原服务器中的authz文件中的分组,权限设置等信息通过复制粘贴的方式,修改到新服务器的authz中,将原服务器下的httpd/conf/httppasswd用户信息也直接复制粘贴到/home/svn/conf/http_passwd中即可.

  6. 重启http服务,重启svn服务

    systemctl restart httpd.service //重启httpd服务
    ps -ef|grep svn //查看svn的进程信息
    kill -9 svn的pid //杀掉svn进程
    svnserve -d -r /home/svn //重启svn

    如果没有报错的情话下,在浏览器输入http://你的服务器IP/你的访问路径(上面3.设置svn关联的配置文件中的Location 你配置的),应该就可以访问了

  7. 我遇到的问题是可以正常拉项目,但不能提交.提交时报错could not begin a transaction,解决方案:

    chcon -R -t httpd_sys_rw_content_t /home/svn/

    chcon命令 是修改对象(文件)的安全上下文,比如:用户、角色、类型、安全级别。也就是将每个文件的安全环境变更至指定环境。使用--reference选项时,把指定文件的安全环境设置为与参考文件相同。chcon命令位于/usr/bin/chcon

    语法

    chcon [选项]... 环境 文件...
    chcon [选项]... [-u 用户] [-r 角色] [-l 范围] [-t 类型] 文件...
    chcon [选项]... --reference=参考文件 文件...
    

    选项

    -h, --no-dereference:影响符号连接而非引用的文件。
        --reference=参考文件:使用指定参考文件的安全环境,而非指定值。
    -R, --recursive:递归处理所有的文件及子目录。
    -v, --verbose:为处理的所有文件显示诊断信息。
    -u, --user=用户:设置指定用户的目标安全环境。
    -r, --role=角色:设置指定角色的目标安全环境。
    -t, --type=类型:设置指定类型的目标安全环境。
    -l, --range=范围:设置指定范围的目标安全环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值