且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

svn服务器的配置

更新时间:2022-09-16 21:13:27

                            仓库:服务器上的文件
                            工作副本:客户端下载到本地的文件
                            工作副本的状态:
                            1、当前未更改
                            2、当前已更改
                            3、过时未更改
                            4、过时已更改

配置svn服务器
一、准备一台VM作为服务器
1、初始化
vh01.tedu.cn 192.168.4.1 selinux/firewalld/yum/
2、安装
[root@vh01 ~]# yum install -y subversion
3、创建svn数据库根目录
[root@vh01 ~]# mkdir /var/svn
4、创建项目目录
[root@vh01 ~]# svnadmin create /var/svn/project
5、修改配置文件
[root@vh01 ~]# vim /var/svn/project/conf/svnserve.conf 
anon-access = none #匿名用户不允许访问
auth-access = write #认证后的用主户可以读写
password-db = passwd #存储svn用户的文件
authz-db = authz #授权文件
[root@vh01 ~]# vim /var/svn/project/conf/passwd 
[users]
tom = tom123
jerry = jerry123
[root@vh01 ~]# vim /var/svn/project/conf/authz 
[groups]
tom_and_jerry = tom,jerry
[/]
@tom_and_jerry = rw

  • = r
    6、起动服务
    [root@vh01 ~]# systemctl start svnserve
    [root@vh01 ~]# systemctl enable svnserve.service 
    7、导入项目文件到svn服务器
    [root@vh01 ~]# cd /usr/lib/systemd/system
    [root@vh01 system]# svn import . file:///var/svn/project -m "Init Data"

客户端使用svn
1、客户端下载svn服务器上的项目文件
[root@vh01 system]# cd /opt/
[root@vh01 opt]# svn --username tom --password tom123 checkout svn://192.168.4.1/project code1
[root@vh01 opt]# cd code1/
[root@vh01 code1]# svn log
2、更新本地工作副本
[root@vh01 code1]# svn update 
3、新建文件
[root@vh01 code1]# vim foo.sh
#!/bin/bash

if [ "$1" == "foo" ]; then
echo "bar"
elif [ "$1" == "bar" ]; then
echo "foo"
else
echo "$0 foo|bar"
fi
[root@vh01 code1]# svn add foo.sh #把foo.sh加入svn本地管理
[root@vh01 code1]# svn diff #显示服务器和本地工作副本的区别
将本地文件同步到服务器
[root@vh01 code1]# svn commit -m "Add foo.sh to project"
4、新建目录
[root@vh01 code1]# svn mkdir subdir
[root@vh01 code1]# svn status #查看状态
5、删除文件
[root@vh01 code1]# rm cups.service # 本地删除
[root@vh01 code1]# svn update # cups.service将重新下载
[root@vh01 code1]# svn delete cups.service # 在svn中删除文件
[root@vh01 code1]# svn status 
[root@vh01 code1]# svn move foo.sh bar.sh # 在svn中改名
[root@vh01 code1]# svn commit -m "rename foo.sh, del cups.service, mkdir subdir"
6、练习
[root@vh01 code1]# sed -i '1a###test###' sshd.service 
[root@vh01 code1]# sed -i '2a###mytest###' sshd.service
[root@vh01 code1]# svn diff sshd.service
[root@vh01 code1]# svn diff 
[root@vh01 code1]# svn log svn://192.168.4.1/project
[root@vh01 code1]# svn commit -m "modify sshd.service"
7、将sshd.service回退到增加两行之前的状态
[root@vh01 code1]# svn merge -r4:2 sshd.service
[root@vh01 code1]# vim sshd.service 第六步新增的两行消失
8、将svn的第2版本的文件全部下载下来,叫做code2
[root@vh01 opt]# svn co -r2 svn://192.168.4.1/project code2

多人协作
1、tom和jerry分别下载了svn上面的项目
[root@vh02 ~]# cd /opt/
[root@vh02 tmp]# svn co --username tom --password tom123 svn://192.168.4.1/project tom
[root@room8pc16 ~]# svn ls --username tom --password tom123 svn://192.168.4.1/project 
[root@vh03 ~]# cd /var/tmp/
[root@vh03 opt]# svn co --username jerry --password jerry123 svn://192.168.4.1/project jerry
2、不同用户修改不同文件
[root@vh02 tmp]# cd tom/
[root@vh02 tom]# sed -i '3a#####my test####' vmtoolsd.service 
[root@vh02 tom]# svn commit -m "tom modify vmtoolsd.service"
[root@vh03 opt]# cd jerry/
[root@vh03 jerry]# sed -i '3a#####jerry test####' sshd.service 
[root@vh03 jerry]# svn commit -m "jerry modify sshd.service"
[root@vh03 jerry]# svn update #tom修改的vmtoolsd.service同步到本地
[root@vh02 tom]# svn update

3、不同用户改变相同文件的不同行
[root@vh02 tom]# sed -i '1a####tom modify###' user.slice 
[root@vh02 tom]# svn commit -m "tom modify slice.user"
[root@vh03 jerry]# sed -i '$a###jerry modify###' user.slice 
[root@vh03 jerry]# svn commit -m "jerry modify user.slice" #失败,因为文件过时了(本地版本号低于服务器上的版本号)
[root@vh03 jerry]# svn update #更新到最新版本
[root@vh03 jerry]# svn commit -m "jerry modify user.slice" #重新提交
[root@vh03 jerry]# vim user.slice # tom和jerry的修改全部存在
4、不同用户改变相同文件的相同行
[root@vh02 tom]# sed -i '8c#####tom tom tom####' zram.service 
[root@vh02 tom]# svn commit -m "tom modify zram.service"
[root@vh03 jerry]# sed -i '8c####jerry jerry####' zram.service 
[root@vh03 jerry]# svn commit -m "jerry modify zram.service"
[root@vh03 jerry]# svn update #选择p
[root@vh03 jerry]# ls zram.service
[root@vh03 jerry]# mv zram.service.mine zram.service
[root@vh03 jerry]# ls zram.service

[root@vh03 jerry]# rm -f zram.service.r
[root@vh03 jerry]# ls zram.service

[root@vh03 jerry]# svn commit -m "jerry modify zram.service"
5、svn服务器端备份
[root@vh01 tom]# svnadmin dump /var/svn/project/ > /var/tmp/project.bak
6、还原
[root@vh01 tom]# rm -rf /var/svn/project/
[root@vh01 tom]# ls /var/svn/
[root@vh01 tom]# svnadmin create /var/svn/project/
[root@vh01 tom]# svnadmin load /var/svn/project/ < /var/tmp/project.bak










本文转自 英强云计算 51CTO博客,原文链接:http://blog.51cto.com/13404755/2051846,如需转载请自行联系原作者