一,安装svn

 

#yum install subversion

 

 

 

 

二,步骤

 

1,新建一个目录用于存储SVN所有文件
# mkdir /home/svn

2,新建一个版本仓库
# svnadmin create /home/svn/project

 

3,进入project/conf/passwd配置svn的账号密码

 

格式:账号 = 密码

可以配置多个账号密码

[users]
 # harry = harryssecret
 # sally = sallyssecret
 marttinli = xxxxxxpws
 congtian = xxxxpws
 xiujiang = xxxxpws
 zhangjing = xxxxxpws


4,配置svn账号的访问权限

admin = marttinli
 devs = congtian,xiujiang,zhangjing[funwall3:/]
 @admin = rw
 @devs = r
 * =

 [funwall3:/trunk]
 @admin = rw
 @devs = r
 * =

 [funwall3:/branch]
 @admin = rw
 @devs = rw
 * =

说明:以上信息表示,只有project_p用户组有根目录的读写权。r表示对该目录有读权限,w表示对该目录有写权限,rw表示对该目录有读写权限。最后一行的* =表示,除了上面设置了权限的用户组之外,其他任何人都被禁止访问本目录。这个很重要,一定要加上!

6,修改svnserve.conf文件,让用户和策略配置升效.
svnserve.conf内容如下:

[general]
 anon-access = none
 auth-access = write
 password-db = /home/svn/project/conf/passwd
 authz-db = /home/svn/project/conf/authz


7,启动服务器
# svnserve -d -r /home/svn  
注意:如果修改了svn配置,需要重启svn服务,步骤如下:

# ps -aux|grep svnserve

# killall svnserve
 # svnserve -d -r /home/svn

 

注意:配置项所有的行都必须顶格,否则报错。

 

注意:必须是/home/svn目录,不能是他的子目录。否则可能会报错

svn出现Authorization failed

或者doesn't exist

8,自动同步svn的内容到你server所在的工程目录(最好严格按照如下顺序执行)

1)

cd /home/svn/project/hooks/

#vi post-commit

内容如下:

 #!/bin/sh
#设定环境变量,如果没有设定可能会出现update报错
export LANG=zh_CN.UTF-8   
#设定语言,根据系统语言设置,如果是UTF-8 就设置为 LANG=zh_CN.UTF-8
SVN_PATH=/usr/bin/svn #不要改
WEB_PATH=/home/svn/project/code  #一定要改成对应上面那个server运行环境中的目录

$SVN_PATH update svn://127.0.0.1/project $WEB_PATH  --username 用户名 --password 密码 --no-auth-cache
退出编译:esc
保存退出:ZZ
2)输入下面2个命令

export LANG="zh_CN.UTF-8"

chmod -R 755 post-commit

 

 

3)重要:你先得手动checkout一份到指定目录

 

svn co svn://localhost/project /home/svn/project/code --username lsgoweb1(SVN账号) --password lsgoweb1(SVN密码)

其中/home/www/project/code是你自己想存储代码的位置

 

9,最后你可以在你本地checkout svn://... ip..../project

试着提交一次看看

 

 

 

其他问题

0,重要,若你玩了一段时间突然有一天上传有utf8问题

大概率是某些文件的问题,你还有可能删不掉。

你需要rm -rf 删除整个目录的文件夹。

然后svn co svn://localhost/project /xxx/xxx --username xxx --password xxx

 

如果还不行,再考虑下面的方案

 

 

1,若报错utf8编码问题,大胆在命令行输入

export LANG="zh_CN.UTF-8"

必要的时候,需要重新create一个仓库,重新配置

 

2,svn自动上传后得文件名是中文乱码,而内容并没有乱码

中文乱码的文件,都不能正常下载和打开。

这个时候要先设置

export LANG="zh_CN.UTF-8"

然后,hooks里的post-commit也修改"zh_CN.UTF-8"

然后,需要重新checkout一个仓库。

 

3. Warning: post-commit hook failed (exit code 255) with no output.

如果执行提交时SVN提示255错误,则是 post-commit 脚本文件的权限不对,post-commit 脚本必须有 +x 权限。

chown svn:svn post-commit
chmod +x post-commit

 

 

待确认点

1,/home/www是可以任意指定的吧

2,自动update svn的脚本,如果有冲突怎么办,貌似该问题会很严重。

解决方案:

把服务器需要修改的配置文件,在本地务必igore,保证服务器修改的文件,本地是绝对不会提交。

3,如何删除彻底之前建立的svn仓库