代码管理平台—svn

一、什么是svn?

SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上不少版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多我的共同开发同一个项目,共用资源的目的。 官网:https://tortoisesvn.net/windows

二、Linux服务端(192.168.6.120)下安装使用svn

输入命令: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

三、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
------------------------------------------------------------------------

四、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文件夹下查看是否已同步成功: