安装subversion的软件:
yum -y install subversion
创建版本库:
mkdir /var/svn
svnadmin create /var/svn/project
[root@lv1 ~]# ls /var/svn/project/
conf db format hooks locks README.txt
本地导入数据:
svn import . file:///var/svn/project/ -m "lnit Data"
修改配置文件。创建用户和密码:
vim /var/svn/project/conf/svnserve.conf
19 anon-access = none //
匿名无任何权限
20 auth-access = write //
有效账户可写
27 password-db = passwd //
密码文件
34 authz-db = authz //
ACL访问控制列表文件
用户和密码文件:
vim /var/svn/project/conf/passwd
[users]
# harry = harryssecret
# sally = sallyssecret
harry = 123456
tom = 123456
ACL访问控制:
[root@lv1 ~]# vim /var/svn/project/conf/authz
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[/]
harry = rw
tom = rw
启动服务:
svnserve -d -r /var/svn/project
[root@lv1 ~]# ss -ntulp | grep svnserve
tcp LISTEN 0 7 *:3690 *:* users:(("svnserve",pid=10507,fd=3))
客户端测试:
[root@lv2 ~]# yum -y install subversion
[root@lv2 ~]# cd /tmp
[root@lv2 tmp]# svn --username harry --password 123456 co svn://192.168.4.11/ code
[root@lv2 tmp]# cd /tmp/code/
[root@lv2 code]# ls
[root@lv2 code]# vim user.slice //随意修改文件内容
[root@lv2 code]# svn ci -m "modify user"
//将本地修改的数据同步到服务器
正在发送 user.slice
传输文件数据.
提交后的版本为 2。
[root@lv2 code]# svn update
//将服务器上新的数据同步到本地
正在升级 '.':
版本 2。
[root@lv2 code]# svn info svn://192.168.4.11
//查看版本仓库基本信息
路径: .
URL: svn://192.168.4.11
版本库根: svn://192.168.4.11
版本库 UUID: e105163b-0efa-4abb-94af-411493801e91
版本: 2
节点种类: 目录
最后修改的作者: harry
最后修改的版本: 2
最后修改的时间: 2018-08-30 17:24:28 +0800 (四, 2018-08-30)
[root@lv2 code]# svn log svn://192.168.4.11
//查看版本仓库的日志
------------------------------------------------------------------------
r2 | harry | 2018-08-30 17:24:28 +0800 (四, 2018-08-30) | 1 行
modify user
------------------------------------------------------------------------
r1 | root | 2018-08-30 17:11:03 +0800 (四, 2018-08-30) | 1 行
lnit Data
------------------------------------------------------------------------
[root@lv2 code]# echo test > test.sh
//本地新建一个文件
[root@lv2 code]# svn ci -m "new file"
//提交失败,该文件不被svn管理
[root@lv2 code]# svn add test.sh
//将文件或目录加入版本控制
A test.sh
[root@lv2 code]# svn ci -m "new file"
//再次提交,成功
正在增加 test.sh
传输文件数据.
提交后的版本为 3。
[root@lv2 code]# svn mkdir subdir
//创建子目录
A subdir
[root@lv2 code]# svn rm timers.target
//使用svn删除文件
D timers.target
[root@lv2 code]# svn ci -m "xx"
//提交一次代码
正在增加 subdir
正在删除 timers.target
提交后的版本为 4。
[root@lv2 code]# vim umount.target
//任意修改本地的一个文件
[root@lv2 code]# svn diff
//查看所有文件的差异
Index: umount.target
===================================================================
--- umount.target (版本 2)
+++ umount.target (工作副本)
@@ -10,3 +10,4 @@
Documentation=man:systemd.special(7)
DefaultDependencies=no
RefuseManualStart=yes
+123456
[root@lv2 code]# svn diff umount.target
//仅查看某一个文件的差异
Index: umount.target
===================================================================
--- umount.target (版本 2)
+++ umount.target (工作副本)
@@ -10,3 +10,4 @@
Documentation=man:systemd.special(7)
DefaultDependencies=no
RefuseManualStart=yes
+123456
[root@lv2 code]# svn cat svn://192.168.4.11/reboot.target
//查看服务器文件的内容
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Reboot
Documentation=man:systemd.special(7)
DefaultDependencies=no
Requires=systemd-reboot.service
After=systemd-reboot.service
AllowIsolate=yes
JobTimeoutSec=30min
JobTimeoutAction=reboot-force
[Install]
Alias=ctrl-alt-del.target
- //删除文件所有内容,但未提交
[root@lv2 code]# sed -i 'd' tmp.mount
[root@lv2 code]# svn revert tmp.mount //还原 tmp.mount 文件
已恢复“tmp.mount”
[root@lv2 code]# rm -rf *.target //删除若干文件
[root@lv2 code]# svn update //还原
[root@lv2 code]# sed -i 'ia hhhj' tuned.service //修改本地副本文件
[root@lv2 code]# svn ci -m "xx" //提交代码文件
正在发送 tuned.service
传输文件数据.
提交后的版本为 5。
[root@lv2 code]# svn merge -r5:2 tuned.service //将版本5还原版本2
--- 正在反向合并 r5,经由 r3,到 “tuned.service”:
U tuned.service
--- 记录反向合并 r5,经由 r3,到“tuned.service”的信息:
U tuned.service
--- 正在从 'tuned.service' 删除合并信息:
U tuned.service