飞道的博客

SVN的安装与使用

258人阅读  评论(0)

安装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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场