svn的安装和使用
svn(subversion):版本管理工具
svn的配置方法有两种:第一种是配置独立的svn服务;第二种是svn借助apache配置svn服务。我采用的是第一种,配置独立的svn服务
注意:
①svn的账号不是linux的系统账号,我们只需要在配置文件里进行相应的配置即可
②svn:建议:一个项目使用一个仓库(可以在一个仓库内保存多个项目,也可以一个仓库保存一个项目而使用多个仓库。我个人比较喜欢第二种,因为 SVN 的每次commit都会导致整个仓库版本号增加一个,如果使用一个仓库内保存多个项目,commit后会使得多个项目的版本号出现断层)
③svn修改配置文件后不需要重新启动服务
④svn重启服务的方法:ps -ef | grep svn 找到svn的进程号----->kill -9 进程号----->svnserve -d -r /opt/data (-d:指放在后台运行 -r:指定仓库目录)
安装:
①yum -y install subversion
②创建仓库目录:mkdir -p /opt/data
③创建仓库:(创建三个仓库svn1 svn2 svn3)(仓库名svn1)
svnadmin create /opt/data/svn1
svnadmin create /opt/data/svn2
svnadmin create /opt/data/svn3
执行后会在/opt/data/目录下自动生成svn1 svn2 svn3三个目录,每个目录下面都有相应的配置文件,如:
④配置相关配置文件:
先配置仓库svn1
cd /opt/data/svn1/conf
该目录下有三个比较重要的文件:authz passwd svnserve.conf
svnserve.conf:主配置文件
passwd :密码与账户相关
authz:仓库的权限相关
注意:文件中的每一行都必须要定格
cat /opt/data/svn1/conf/svnserve.conf
[general]
anon-access = none#未鉴定的用户无权限访问该仓库(有none read write三种)
auth-access = write#鉴定后的可读写仓库
password-db = passwd #使用的密码文件是同级路径的passwd文件,即是/opt/data/svn1/conf/passwd
authz-db = authz#使用的权限控制文件是同级路径的authz文件,即是/opt/data/svn1/conf/authz
realm = svn1#realm 指定版本库的仓库名,即在登录时提示的仓库名称。各个项目的仓库名都可以自定义
cat /opt/data/svn1/conf/passwd(指定账户和密码,格式:账户 = 密码)
[users]
# harry = harryssecret
# sally = sallyssecret
user1 = scj
user2 = scj
user3 = scj
user4 = scj
cat /opt/data/svn1/conf/authz
[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
usergroup = user1,user2 (定义一个组usergroup ,后面多个用户之间用逗号隔开)
# [/foo/bar]
# harry = rw
# &joe = r
# * =
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[svn1:/] (仓库名:/)
@usergroup = rw(组前用@,这个组有读写的权限)
user3 = rw
user4 = r
* =(其他账号没有任何权限)
一个实例如图:
注意:上图中画圈的两部分可以合并为:(此种方式最常用)
[/]
@yunying = rw
* =
附加:
##在svn1库里创建一个test目录,有一个用户user11,只对这个test目录有权限,对svn1库没有权限 [/test] user11 = rw
再配置svn2和svn3仓库
cp -a /opt/data/svn1/conf/* /opt/data/svn2/conf/
cp -a /opt/data/svn1/conf/* /opt/data/svn3/conf/
分别修改svnserve.conf文件里的realm = svn1参数
passwd文件里的账号和密码
authz 文件里的[svn1:/]这个标签
⑤启动服务:
svnserve -d -r /opt/data (-d:指放在后台运行 -r:指定仓库目录,data/目录下有三个仓库svn1 svn2 svn3)
查看服务是否启动,监听的端口为3690
注意:创建一个新的仓库,不需要重新启动服务
windows客户端的使用:
windows客户端需要安装TortoiseSVN软件
使用步骤:
在windows的 D:\jeff\测试 目录下创建一个目录svn1,如:
右击该目录svn1:
如图:点击 SVN Checkout,跳出如下窗口:
输入URL地址(红圈中的),点击ok,跳出如下窗口:
输入账号和密码(如:上面配置的账号user1 密码scj)
点击ok,跳出如下窗口:
如图:没有红色表示成功
在svn1目录下创建新的文件和目录,提交到服务端:
进入到svn1目录里(该目录下默认会有一个.svn的目录)
新建一个新的文件file2,如图:
右击该文件,找到TortoiseSVN选项,里面有一个add选项,点击add选项
然后该文件会有一个感叹号,如图:
继续右击该file2文件,找到SVN Commit选项,点击该选项进行提交,跳出如下图:
点击ok即可,之后跳出如图:
没有红色表示成功
附加:
svn服务端的仓库/opt/data/svn1/里存储的文件是以FSFS这种格式存储的(可以通过 cat /opt/data/sheji/db/fs-type 查看),我们无法查看源码文件
不过每次客户端提交新代码的时候都会在/opt/data/svn1/db/revs/0这个目录下面生成一个新的文件,这个文件是以数字命令的,即代表着软件的版本号,如图:
如图,此时这个软件的版本为4
同时我们可以cat查看这个文件的内容,里面记录了客户端所进行的操作,如:
表示客户端新创建并提交了一个dir2的目录
目录结构:
进入project目录,在project目录下面创建仓库project1(svnadmin create project1)---->修改相应的配置文件---->客户端访问的时候访问 svn://ip/project/project1(因为project1是仓库,而project不是仓库,所以访问svn://ip/project是不成功的)
停止命令:
killall svnserve
实际测试:
各个组成员只能访问自己的项目,无权限查看别人的项目
只有管理员才能查看所有项目工程