SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上不少版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多我的共同开发同一个项目,共用资源的目的。 官网:https://tortoisesvn.net/windows
输入命令:bash
[root@jin-120 ~]# yum install -y subversion
服务器
建立版本库:svn
[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,内容以下:.net
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服务3d
[root@jin-120 /data/svnroot/myproject/conf]# svnserve -d -r /data/svnroot
查看svn服务是否启动成功 版本控制
以下图可见,svn服务监听的端口为3690
[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 ------------------------------------------------------------------------
在官网下载安装包并安装: 而后在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文件夹下查看是否已同步成功: