1.安装SVN:apt-get install subversion subversion-tools
2. 查看SVN版本: svnserve –version
3. 创建svn仓库存放路径:mkdir /home/svn
4. 创建仓库: root@debian:/home/svn# svnadmin create theyun
5. 重启SVN服务命令: killall svnserve ,svnserve -d -r /home/svn
不识别svnserve时
1、方案:
ps -ef | grep svnserve
sudo kill processID.
svnserve -d -r <path to repository>
6. 配置用户及权限】
svnserve.conf 中默认配置都是注释掉的把下列几个配置去掉注释,稍作修改
nano /home/svn/theyun/conf/svnserve.conf
[general]
anon-access = none // 拒绝匿名用户
auth-access = write // 有权限用户可读写
password-db = passwd // 指定密码配置文件的路径
authz-db = authz // 指定目录权限配置文件的路径
注:不能有空格
【配置用户】
配置用户名为zhangmengbo, 密码为123456
nano /home/svn/theyun/conf/passwd.conf
zhangmengbo=123456
【配置用户权限】
nano /home/svn/theyun/conf/authz.conf
#分组权限
[groups]
g_manager = zhangmengbo,zhuyulei,liujun
python_developer = zhangmengbo,zhuyulei,liujun
android_developer = zhangkun,tianjianguo
iOS_developer = duananqing,liusen
php_developer = songlu,zhuchuanxu,heyupeng,zhangshuai,zhangdongling
[/python]
@python_developer = rw
#* =
[/theyun_android]
@android_developer = rw
#* =
[/theyun_iOS]
@iOS_developer = rw
#* =
[/web_php]
@php_developer = rw
#* =
[/]
@g_manager = rw
注:[theyun:/]表示目录结构的相对根节点,@表示是一个组名,不是用户名,也可以换成单独的用户名,* 表示”除了g_manager里的人之外的其余所有人”,
* = r 表示”那些只能读,不能写”,* = 表示除了该部门开发者之外,任何人都被禁止访问本目录
*
查看svn程序监听的所有端口以及PID信息:netstat -anp |grep svn
二.设置钩子自动更新
实现SVN与WEB同步,可以CO一个出来,也可以直接用自动更新web目录的方法,我们要在svn版本库中配置钩子来实现,就是创建一个post-commit的配置文件,对其进行简单的配置,简简单单的四步就可以实现Linux下SVN自动更新web目录配置。
第一步:建立你的web程序目录
1
|
mkdir
/
var
/www/html/test
|
进入你建立的web程序目录(svn checkout可以简写为co)
1
2
|
svn checkout svn:
//localhost/svntest //不重命名文件夹,直接在当前目录下检出
svn checkout svn:
//localhost/svntest test //检出文件并且重命名文件夹
例如将当前目录导入版本库myproject:
|
第二步:在项目库的 hooks/ 目录下新建 post-commit 文件 【钩子脚本】
添加脚本内容如下
1
2
3
4
5
|
export LANG=en_US.UTF-8
SVN=/usr/bin/svn #这里配置的是svn安装bin目录下的svn文件
WEB=/
var
/www/html/test #要更新的目录
$SVN
update
$WEB
--username cqh --password 123456
chown
-R www:www
$WEB
or
#!/bin/sh
|
其中SVN=右边改成 svn 命令位置
WEB=右边改成你实际的web目录
第三步:让post-commit有执行的权限
1
|
chmod
a+x post-commit
|
第四步:这里就已经完成了,第四步就是测试了。
说明:
export LANG=en_US.UTF-8是为了解决svn post commit 中文乱码,设置本地化编码,因为我的系统为UTF8编码,其实SVN默认就是UTF-8编码,如果编码是GBK的话不设置将会出现错误,而执行不成功,错误标识为
1
|
svn: Can
't convert string from native encoding to '
GBK'
|
/usr/bin/svn update --username cqh --password 123456 /var/www/html/test 执行更新操作
如果提示:
1
|
post-commit hook failed (
exit
code 255) with no output
|
赋予post-commit文件可执行权限
如果您的默认编码就是UTF-8的,要上传中文文件,先将文件另存为UTF-8格式在提交