安装SVN
SVN全称subversion,安装svn:
[root@linux ~]# yum -y install subversion
创建项目版本库:
[root@linux ~]# mkdir -p /data/svn/project1
初始化版本库:
[root@linux ~]# svnadmin create /data/svn/project1
[root@linux ~]# ls /data/svn/project1/
conf db format hooks locks README.txt
查看配置文件:
[root@linux ~]# cd /data/svn/project1/conf/
[root@linux conf]# ls
authz passwd svnserve.conf
authz为用户和权限配置文件
passwd为用户密码的配置文件
svnserve.conf为svn配置文件
编辑配置文件authz:
[root@linux conf]# vim authz
在[groups]下添加以下内容:
[groups]
users = user1,user2,user3
[/]
@users = rw
*= r
[project1:/]
user1 = rw
定义用户组users以及用户组中的三个用户;
[ / ]表示/data/svn/目录下的所有项目的目录,该目录下的所有项目users组中的用户都有读写权限,*=r表示其他用户有读权限;
[project1:/ ]表示project1项目的目录中的文件,只有用户user1具有读写权限,这种方式用于有多个项目时,分开管理各个用户的权限
编辑配置文件passwd,在[users]下定义每个用户的密码:
[users]
user1 = user1test
user2 = user2test
user3 = user3test
编辑svn配置文件:
[root@linux conf]# vim svnserve.conf
在[general]下添加以下内容:
#匿名用户没有权限
anon-access = none
#授权用户可写
auth-access = write
#指定密码配置文件
password-db = passwd
#指定用户与授权配置文件
authz-db = authz
#指定对哪个项目生效,多个项目添加多个realm
realm = /data/svn/project1
auth-access = write表示整个项目的读写权限,而authz是针对个人用户的, 若svnserver.conf中设置为写,但是个人用户却为只读,那最终权限是只读;若svnserver.conf里面是只读,即使authz设置为写,也不能写
启动svn:
[root@linux conf]# svnserve -d -r /data/svn/
查看进程与监听端口:
[root@linux conf]# ps aux|grep svn
root 3521 0.0 0.0 180736 800 ? Ss 15:03 0:00 svnserve -d -r /data/svn/
[root@linux conf]# netstat -lntp |grep 3690
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 3521/svnserve
Linux客户端上使用SVN
在客户端A安装svn:
[root@linux02 ~]# yum -y install subversion
检出项目:
[root@linux02 ~]# mkdir /data/svntest
[root@linux02 ~]# cd !$
cd /data/svntest
[root@linux02 svntest]# svn checkout svn://192.168.234.128/project1 --username=user1
认证领域: <svn://192.168.234.128:3690> /data/svn/project1
“user1”的密码:
-----------------------------------------------------------------------
注意! 你的密码,对于认证域:
<svn://192.168.234.128:3690> /data/svn/project1
只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。
你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?yes
取出版本 0。
[root@linux02 svntest]# ls
project1
#服务端的项目目录已显示(取出版本为0),输入yes后,下次检出将不再验证密码
在本地项目目录中创建新文件:
[root@linux02 svntest]# cd project1/
[root@linux02 project1]# touch new_svntest
[root@linux02 project1]# cat /etc/passwd > !$
给文件添加新增标记:
[root@linux02 project1]# svn add new_svntest
A new_svntest
上传到服务器:
[root@linux02 project1]# svn commit -m "add file"
正在增加 new_svntest
传输文件数据.
提交后的版本为 1。
#项目版本更新为1,svn commit的作用是将添加了标记的文件上传到服务器或从服务器删除,-m 指定描述信息,便于查看日志时显示
在客户端B安装svn后检出项目:
[root@linux03 ~]# svn checkout svn://192.168.234.128/project1 --username=user2
认证领域: <svn://192.168.234.128:3690> /data/svn/project1
“user2”的密码:
-----------------------------------------------------------------------
注意! 你的密码,对于认证域:
<svn://192.168.234.128:3690> /data/svn/project1
只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。
你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?yes
A project1/new_svntest
取出版本 1。
[root@linux03 ~]# ls project1/
new_svntest
#取出的项目版本已经为1,客户端A新增的文件已显示
给文件添加删除标记:
[root@linux03 ~]# cd project1/
[root@linux03 project1]# svn delete new_svntest
D new_svntest
在服务器上删除:
[root@linux03 project1]# svn commit -m "delete file"
正在删除 new_svntest
提交后的版本为 2。
[root@linux03 project1]# ls
[root@linux03 project1]#
#删除后该文件已不在
在客户端A更新项目:
[root@linux02 project1]# svn up
正在升级 '.':
D new_svntest
更新到版本 2。
[root@linux02 project1]# ls
[root@linux02 project1]#
#更新后文件也已经被删除
在服务器或客户端的项目目录下都可以查看变更日志:
[root@linux project1]# svn log
------------------------------------------------------------------------
r2 | user2 | 2019-12-21 15:35:45 +0800 (六, 2019-12-21) | 1 行
delete file
------------------------------------------------------------------------
r1 | user1 | 2019-12-21 15:21:52 +0800 (六, 2019-12-21) | 1 行
add file
------------------------------------------------------------------------
Windows客户端使用SVN
下载TortoiseSVN工具并安装,官网https://tortoisesvn.net/index.zh.html
安装完后,鼠标右键列表即可显示SVN相关选项:
创建项目文件夹后右键检出:
添加svn服务端地址以及项目目录:
输入授权的用户和密码:
检出后选中该文件夹或进入文件夹中再次点击右键,即可显示svn功能菜单:
创建新文件添加新增标记:
也可以再次选择取消标记:
在目录中右键点击svn commit 即可将添加了新增标记的文件上传到服务端:
添加描述便于日志查看:
在另一台linux客户端更新项目目录:
#Windows客户端新增的文件已显示
补充:svn commit 命令不是单独向服务端新增文件或者删除服务端的文件,而是根据用户针对文件添加的具体标记,在服务端处理。
转载:https://blog.csdn.net/Powerful_Fy/article/details/103644101