1案例1:Subversion基本操作
1.1问题
本案例要求先快速搭建好一台subversion服务器,并测试该版本控制软件:
- 创建版本库
- 导入初始化数据
- 检出数据至用户本地副本
- 对本地副本进行增删改查等操作
1.2方案
使用yum安装subversion软件,使用SVN客户端工具连接SVNserver服务器并测试版本控制软件。
1.3步骤
实现此案例需要按照如下步骤进行。
步骤一:安装subversion服务器
1)yum安装subversion软件
[root@web1 ~]# yum -y install subversion
[root@web1 ~]# rpm -q subversion
2)创建版本库
[root@web1 ~]# mkdir /var/svn/
[root@web1 ~]# svnadmin create /var/svn/project
[root@web1 ~]# ls /var/svn/project/
conf/ db/ format hooks/ locks/ README.txt
3)本地导入初始化数据
[root@web1 ~]# cd /usr/lib/systemd/system/
[root@web1 ~]# svn import . file:///var/svn/project/ -m "Init Data"
4)修改配置文件,创建账户于密码
所有配置文件,要求顶头写,开头不要有空格。
[root@web1 ~]# vim /var/svn/project/conf/svnserve.conf
[general]
### These options control access to the repository for unauthenticated
### and authenticated users. Valid values are "write", "read",
### and "none". The sample settings below are the defaults.
anon-access = none
//19行,匿名无任何权限
auth-access = write
//20行,有效账户可写
password-db = passwd
//27行,密码文件
authz-db = authz
//34行,ACL访问控制列表文件
[root@web1 ~]# vim /var/svn/project/conf/passwd
… …
[users]
harry = 123456
//用户名和密码
tom = 123456
//用户名和密码
[root@web1 ~]# cat /var/svn/project/conf/authz
[/] //定义ACL访问控制
harry = rw //用户对项目根路径可读可写
tom = rw
5)启动服务
[root@web1 ~]# svnserve -d -r /var/svn/project
[root@web1 ~]# netstat -nutlp |grep svnserve
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 4043/svnserve
备注:启动服务也可以使用svnserve -d启动,但客户端访问时需要制定绝对路径(svn://服务器IP/var/svn/project)。
步骤二:客户端测试(192.168.2.200)
1)将服务器上的代码下载到本地
[root@web2 ~]# cd /tmp
[root@web2 tmp]# svn --username harry --password 123456 \
co svn://192.168.2.100/ code
//建立本地副本,从服务器192.168.2.100上co下载代码到本地code目录
//用户名harry,密码123456
Store password unencrypted (yes/no)? yes //提示是否保存密码
[root@web2 ~]# cd /tmp/code
[root@web2 code]# ls
[root@web2 code]# vim user.slice //挑选任意文件修改其内容
[root@web2 code]# svn ci -m "modify user" //将本地修改的数据同步到服务器
[root@web2 code]# svn update //将服务器上新的数据同步到本地
[root@web2 code]# svn info svn://192.168.2.100 //查看版本仓库基本信息
[root@web2 code]# svn log svn://192.168.2.100 //查看版本仓库的日志
[root@web2 code]# echo "test" > test.sh //本地新建一个文件
[root@web2 code]# svn ci -m "new file" //提交失败,该文件不被svn管理
[root@web2 code]# svn add test.sh //将文件或目录加入版本控制
[root@web2 code]# svn ci -m "new file" //再次提交,成功
[root@web2 code]# svn mkdir subdir //创建子目录
[root@web2 code]# svn rm timers.target //使用svn删除文件
[root@web2 code]# svn ci -m "xxx" //提交一次代码
[root@web2 code]# vim umount.target //任意修改本地的一个文件
[root@web2 code]# svn diff //查看所有文件的差异
[root@web2 code]# svn diff umount.target //仅查看某一个文件的差异
[root@web2 code]# svn cat svn://192.168.2.100/reboot.target //查看服务器文件的内容
[root@web2 code]# sed -i 'd' tmp.mount
//删除文件所有内容,但未提交
[root@web2 code]# svn revert tmp.mount
//还原tmp.mount文件
[root@web2 code]# rm -rf *.target
//任意删除若干文件
[root@web2 code]# svn update
//还原
[root@web2 code]# sed -i '1a #test###' tuned.service
//修改本地副本中的代码文件
[root@web2 code]# svn ci -m "xxx"
//提交代码
[root@web2 code]# svn merge -r7:2 tuned.service
//将文件从版本7还原到版本2
使用SVN命令测试SVNserver服务时可以使用的命令列表如下: