基于Linux的SVN搭建与配置基本操作
SVN
定义SVN仓库
管理SVN仓库
测试1:(机器1:libin2.com)
# yum install -y subversion #装包
# svnadmin create /tmp/svn #创建一个SVN仓库/tmp/svn定义就会创建
# tree /tmp/svn/ #查看svn的目录书
# groupadd -g 50000 svngroup #创建一个5000id的组svngroup
# chgrp -R svngroup /tmp/svn/ #设置/tmp/svn/的所属组
# ls -ld /tmp/svn/db/
# chmod g+w /tmp/svn/db/ #设置组内用户可以写/tmp/svn/db/的权限
chmod o= /tmp/svn/db/ #设置其他用户没有任何权限
# useradd hello #创建2个用户并设置密码
# useradd hello1
# echo redhat | passwd --stdin hello
# echo redhat | passwd --stdin hello1
# usermod -aG svngroup hello #追加2个用户到svngroup组中
# usermod -aG svngroup hello1
#检查用户是否在组中
# chmod -R g+w /tmp/svn/db/ #递归 /tmp/svn/db/下的文件组用户有写权限
# chmod -R o= /tmp/svn/db/ #递归 /tmp/svn/db/下的文件其他用户没有任何权限
# su - hello #切换普通用户
# mkdir source #创建一个文件夹
# cd source/;touch file1 #创建一个文件
# echo rhca401>file1 #写入东西到文件
# vim ~/.bash_profile #在个人用户添加svn的vim变量
==>export SVN_EDITOR=vim
# source ~/.bash_profile ;cd #回到上级目录
# svn import source/ file:///tmp/svn/dnsfiles #将文件导入到svn仓库dnsfiles 自行可以取名
[hello@libin2 ~]$ rm -rf source/ #本地将文件删除,如何将传到svn的数据再导入进来,这是本地下载
$ svn checkout file:///tmp/svn/dnsfiles #file:///tmp/svn/dnsfiles为本地的写法
下面实现切换客户端,也能进行下载
测试2:(机器2:libin3.com)
# yum install -y subversion
# useradd hello #创建2个用户并设置密码
# useradd hello1
# echo redhat1 | passwd --stdin hello
# echo redhat1 | passwd --stdin hello1
# su - hello #切换普通用户,将libin2.com的数据导入进来
[hello@libin3 ~]$ svn checkout svn+ssh://libin2.com/tmp/svn/dnsfiles #svn+ssh为语法
[hello@libin3 ~]$ ssh-keygen #由于每次都需要密码,在libin3.com中生成密钥
[hello@libin3 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub hello@libin2.com #将公钥拷贝给libin2.com
[hello@libin3 ~]$ rm -rf dnsfiles/ #将本地的文件删掉
[hello@libin3 ~]$ svn checkout svn+ssh://libin2.com/tmp/svn/dnsfiles #这时取svn文件就不需要密码了
测试3:(机器1:libin2.com)libin2的数据变动,libin3同步
[hello@libin2 ~]$ cd dnsfiles/
[hello@libin2 dnsfiles]$ vim file1 #在改变一下数据,保存退出
[hello@libin2 dnsfiles]$ svn commit #告知svn修改了文件
保存退出后,因为此时会和之前的文件进行匹配,所有版本信息就会变
[hello@libin3 ~]$ cat dnsfiles/file1 #切换到libin3.com,发现文件还是旧的
[hello@libin3 ~]$ cd dnsfiles/ #进入到libin2相同的目录下
[hello@libin3 dnsfiles]$ svn update #更新文件版本
如果更新后不想要版本2了,要用版本1
[hello@libin3 ~]$ rm -rf dnsfiles/ #返回上级目录,先将dnsfiles/删除
[hello@libin3 ~]$ svn checkout -r 1 svn+ssh://libin2.com/tmp/svn/dnsfiles #-r:选择哪个版本
可以看到已经回到了版本1
[hello@libin3 ~]$ cd dnsfiles/
[hello@libin3 dnsfiles]$ svn update #还是可以更新到最新版本
测试4:(机器2:libin3.com)libin3.com改动数据进行上传
[hello@libin3 dnsfiles]$ echo 20220122rhca401 > ./newfile #在 当前路径文件newfile并写入点东西
[hello@libin3 dnsfiles]$ svn add ./newfile #上传文件
[hello@libin3 dnsfiles]$ vim ~/.bash_profile #编辑环境变量
export EDITOR=vim
[hello@libin3 dnsfiles]$ source ~/.bash_profile #source环境变量
此时,版本就会更新为3了
切换到libin2.com机器,更新一下文件 #此时版本信息就更新了
[hello@libin2 dnsfiles]$ svn update
测试4:删除文件进行上传
[hello@libin2 dnsfiles]$ svn delete ./newfile #删除一个文件
[hello@libin2 dnsfiles]$ svn commit #进行提交到svn
[hello@libin3 dnsfiles]$ svn update #切换到libin3.com进行更新了
测试4:重命名文件
[hello@libin3 dnsfiles]$ svn mv file1 libin
[hello@libin3 dnsfiles]$ svn commit #进行提交
此时版本又会更新
[hello@libin2 dnsfiles]$ svn update #切换到libin2.com更新版本信息
[hello@libin2 dnsfiles]$ svn update -r 3 #若想回到之前版本可以-r
测试4:测试5,改动文件提交svn commit 不需要进入vim进行日志说明
[hello@libin2 dnsfiles]$ svn mv libin libin-rhca #对libin进行改名
[hello@libin2 dnsfiles]$ svn commit -m "mv a file" #-m:指定说明
[hello@libin2 dnsfiles]$ svn log #可以查看svn所有操作日志
总结:知识点
svn import
svn commit
svn update
svn add
svn del
svn mv