linux debian安装配置SVN服务器

来源:互联网 发布:微信端口开发 编辑:程序博客网 时间:2024/05/29 13:47

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 
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:
svn import . file:///home/user/svn/myproject -m "导入文件"

 第二步:在项目库的 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
REPOS="$1"
REV="$2"
export LANG=zh_CN.UTF-8  #这里配置的是/etc/default/locale文件下的LANG="en_US.UTF-8"   LANGUAGE="en_US:en"
svn up /var/www/html/qishi

其中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格式在提交


原创粉丝点击