一、安装svn
yum install subversion
二、创建版本库test
mkdir -p /var/svndata/test
svnadmin create /var/svndata/test
进入conf目录
cd /var/svndata/test/conf
①、用户名口令文件passwd
用户名口令文件由svnserve.conf的配置项password-db指定,缺省为conf目录中的passwd。该文件仅由一个[users]配置段组成。
[users]配置段的配置行格式如下:
=
添加一个用户为zhangsan密码123456
vi passwd
添加zhangsan=123456
②、权限配置文件:设置权限
权限配置文件由svnserve.conf的配置项authz-db指定,缺省为conf目录中的authz。该配置文件由一个[groups]配置段和若干个版本库路径权限段组成。
[groups]配置段中配置行格式如下:
=
版本库路径权限段的段名格式如下:
[:]
vi authz
添加如下信息
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
admin=zhangsan
[/]
@admin=rw
*=r
将zhangsan设置为admin用户组
在本库中,用户组为admin的用户有读写权限,其他用户只有读权限。
移动passwd和authz 到/var/svndata
③、全局配置:svn服务配置文件svnserve.conf
vi svnserve.conf
在最底下添加如下信息
[general]
anon-access = read #匿名用户可读
auth-access = write #授权用户可写
password-db = ../../passwd #使用哪个文件作为账号文件
authz-db = ../../authz #使用哪个文件作为权限文件
realm = test #仓库名称
anon-access: 控制非鉴权用户访问版本库的权限,取值范围为"write"、"read"和"none"。 即"write"为可读可写,"read"为只读,"none"表示无访问权限。 缺省值:read
auth-access: 控制鉴权用户访问版本库的权限。取值范围为"write"、"read"和"none"。 即"write"为可读可写,"read"为只读,"none"表示无访问权限。 缺省值:write
authz-db: 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。 除非指定绝对路径,否则文件位置为相对conf目录的相对路径。 缺省值:authz
realm: 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的 认证域相同,建议使用相同的用户名口令数据文件。 缺省值:一个UUID(Universal Unique IDentifier,全局唯一标示)
启动svn版本库:
svnserve -d -r /var/svndata/
服务器检出:
svn co http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名 --password 密码
svn checkout http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名
cd /var/www 进入你的www目录
svn co svn://localhost/test
先输入服务器root密码再输入svn的账号密码然后再选择yes
④、客户端检出
svn checkout svn://139.199.201.210/test --username=zhangsan
三、自动更新
cd /var/svndata/fengyu/hooks
cp post-commit.tmpl post-commit
chmod 755 post-commit
vi post-commit
export LANG=zh_CN.UTF-8
REPOS="$1"
REV="$2"
WEB_PATH=/var/www/test
/usr/bin/svn update $WEB_PATH --username zhangsan--password 123456
四、SVN 启动模式
①、方法一:指定到版本库的上级目录(称之为多库svnserve方式)
比如在 2.2.2 中
svnserve -d -r /var/svndata/
这种情况,一个svnserve可以为多个版本库工作。
服务器检出:
svn co svn://localhost/test
②、方法二:直接指定到版本库(称之为单库svnserve方式)
svnserve -d -r /var/svndata/test
在这种情况下,一个svnserve只能为一个版本库工作。
authz配置文件中对版本库权限的配置应这样写:
[test:/]
@admin=rw
user2=r
[test01:/]
@admin=rw
user2=r
如果此时你还用[/],则表示所有库的根目录,同理,[/src]表示所有库的根目录下的src目录。
服务器检出:
svn co svn://localhost