1、什么是svn?
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。 官网:https://tortoisesvn.net/
2、Linux服务端(192.168.6.120)下安装使用svn
输入命令:
[root@jin-120 ~]# yum install -y subversion
创建版本库:
[root@jin-120 ~]# mkdir -p /data/svnroot/myproject
[root@jin-120 ~]# svnadmin create /data/svnroot/myproject
[root@jin-120 ~]# cd !$
cd /data/svnroot/myproject
[root@jin-120 /data/svnroot/myproject]# ls
conf db format hooks locks README.txt
[root@jin-120 /data/svnroot/myproject]# cd conf
[root@jin-120 /data/svnroot/myproject/conf]# ls
authz passwd svnserve.conf
其中,authz为权限配置文件,passwd为密码文件。
编辑配置文件authz,内容如下:
admins = zhangjin,user1
[/]
@admins = rw
*= r
[myproject:/]
user1 = rw
然后编辑密码文件passwd,内容如下:
[users]
aming = 123456
user1 = 123456
再编辑svnserve.conf文件,内容如下:
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = /data/svnroot/myproject
保存配置文件后,启动svn服务
[root@jin-120 /data/svnroot/myproject/conf]# svnserve -d -r /data/svnroot
查看svn服务是否启动成功
如下图可见,svn服务监听的端口为3690
3、Linux客户端(192.168.6.123)下进行svn的同步操作
[root@jin-123 ~]#yum install -y subversion
[root@jin-123 ~]# mkdir svntest
[root@jin-123 ~]# cd !$
cd svntest
[root@jin-123 ~/svntest]# svn checkout svn://192.168.6.120/myproject --username=zhangjin
认证领域: <svn://192.168.6.120:3690> /data/svnroot/myproject
“zhangjin”的密码:
-----------------------------------------------------------------------
注意! 你的密码,对于认证域:
<svn://192.168.6.120:3690> /data/svnroot/myproject
只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。
你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?yes
取出版本 0。
[root@jin-123 ~/svntest]# cd myproject/
[root@jin-123 ~/svntest/myproject]# ll -a
总用量 0
drwxr-xr-x. 3 root root 18 4月 4 19:43 .
drwxr-xr-x. 3 root root 23 4月 4 19:43 ..
drwxr-xr-x. 4 root root 75 4月 4 19:43 .svn
可以看到,在客户端上也同步了服务端上的myproject目录。
那么,如何在客户端和服务端上进行文件的同步呢?
我们首先在客户端上复制一份文件/etc/passwd:
[root@jin-123 ~/svntest/myproject]# cp /etc/passwd .
[root@jin-123 ~/svntest/myproject]# ls
passwd
然后使用命令svn add passwd把文件passwd添加到版本控制中心:
[root@jin-123 ~/svntest/myproject]# svn add passwd
A passwd
再用命令svn commit -m "add passwd"把文件上传到服务器:
[root@jin-123 ~/svntest/myproject]# svn commit -m "add passwd"
正在增加 passwd
传输文件数据.
提交后的版本为 1。
在服务端上使用命令svn up把当前目录下的文件都更新到最新版:
[root@jin-120 /data/svnroot/myproject]# svn up
正在升级 '.':
已还原“passwd”
版本 1。
[root@jin-120 /data/svnroot/myproject]# ls
conf db format hooks locks passwd README.txt
可以看到,在当前目录下,也生成了passwd文件。
还可以在服务端上删除文件:
[root@jin-120 /data/svnroot/myproject]# svn delete passwd
D passwd
[root@jin-120 /data/svnroot/myproject]# svn commit -m "del passwd"
正在删除 passwd
提交后的版本为 2。
然后在和客户端上执行svn up命令:
[root@jin-123 ~/svntest/myproject]# ls
passwd
[root@jin-123 ~/svntest/myproject]# svn up
正在升级 '.':
D passwd
更新到版本 2。
[root@jin-123 ~/svntest/myproject]# ls
可以看到,客户端上的passwd文件也被同步删除了。
此外,还可以用命令svn log查看变更日志:
[root@jin-123 ~/svntest/myproject]# svn log
------------------------------------------------------------------------
r2 | zhangjin | 2019-04-04 20:17:38 +0800 (四, 2019-04-04) | 1 行
del passwd
------------------------------------------------------------------------
r1 | zhangjin | 2019-04-04 19:53:19 +0800 (四, 2019-04-04) | 1 行
add passwd
------------------------------------------------------------------------
4、windows下使用svn和服务端同步:
在官网下载安装包并安装: 然后在windows下新文件夹myproject,在此文件夹里用鼠标右键选择SVN Checkout,在弹出的对话框中输入服务端的仓库地址:
点“OK”,此时会弹出一个认证窗口,填写用户名和密码后再点击“OK”:
此时就可以进行同步了。
在windows此目录中,新建一个文件test_svn.txt 然后鼠标右键,选择“TortoiseSVN”-->"Add"-->SVN Commit,此时会弹出一个窗口:
然后在Linux服务端上执行命令svn up,即可查看到文件已经同步到服务端上了:
同样,在Linux服务端上新建文件demo.txt,然后执行以下命令:
[root@jin-120 /data/svnroot/myproject]# echo "hello world" >> demo.txt
[root@jin-120 /data/svnroot/myproject]# ls
conf db demo.txt format hooks locks README.txt test_svn.txt
[root@jin-120 /data/svnroot/myproject]# svn add demo.txt
A demo.txt
[root@jin-120 /data/svnroot/myproject]# svn commit -m "add demo.txt"
正在增加 demo.txt
传输文件数据.
提交后的版本为 4。
在windows下的myproject文件夹右键,选择Svn Update,此时会弹出一个窗口:
点“OK”按钮,并进入myproject文件夹下查看是否已同步成功: