本文共 4589 字,大约阅读时间需要 15 分钟。
仓库:服务器上的文件 工作副本:客户端下载到本地的文件 工作副本的状态: 1、当前未更改 2、当前已更改 3、过时未更改 4、过时已更改
配置svn服务器
一、准备一台VM作为服务器1、初始化vh01.tedu.cn 192.168.4.1 selinux/firewalld/yum/2、安装[root@vh01 ~]# yum install -y subversion3、创建svn数据库根目录[root@vh01 ~]# mkdir /var/svn4、创建项目目录[root@vh01 ~]# svnadmin create /var/svn/project5、修改配置文件[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 = tom123jerry = jerry123[root@vh01 ~]# vim /var/svn/project/conf/authz [groups]tom_and_jerry = tom,jerry[/]@tom_and_jerry = rw客户端使用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 log2、更新本地工作副本[root@vh01 code1]# svn update 3、新建文件[root@vh01 code1]# vim foo.sh#!/bin/bashif [ "$1" == "foo" ]; then
echo "bar"elif [ "$1" == "bar" ]; thenecho "foo"elseecho "$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 jerry2、不同用户修改不同文件[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 update3、不同用户改变相同文件的不同行
[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.bak6、还原[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转载于:https://blog.51cto.com/13404755/2051846