Linux下的SVN全攻略(整合版)
下面把之前的3篇整合成一篇方面阅读吧!
1.1 安装SVN服务器
1.1.1 安装所需的软件包如下(提供最新的下载地址):
(1) Subversion 1.5.5(服务器组件,共有2个包,必须安装)
(2) Apache 2.2.XX(Apache的HTTP协议支持,必须安装)
http://apache.justdn.org/httpd/
(3) Berkeley DB (一个内嵌的数据库支持用来存仓库文档,可选安装)
http://www.oracle.com/technology/global/cn/software/products/berkeley-db/index.html
1.1.2 安装apr跟apr-util
(1) 安装apr
./configure --prefix=/usr/local/apr
make
make install
(2) 安装apr-util
./configure --with-apr=/usr/local/apr
make
make install
(3) 安装neon、serf、zlib
./configure --with-apr=/usr/local/apr
make
make install
注意:在对应的./configure命令前,先要cd到解压后的文件夹;neon、serf、zlib、apr、apr-util都在subversion-deps-1.5.5.tar.gz压缩包内内。
1.1.3 安装Apache
#./configure --enable-dav --enable-so --enable-maintainer-mode
#make
#make install
1.1.4 安装Subversion
#./configure --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config
#make
#make install
1.1.5 检验subversion是否安装成功
你可以用以下命令检验手否成功安装
#svnadmin –version
1.1.6 补充说明
SVN可以以2种方式保存仓库,一种是采用使用 默认文件系统(fsfs) 保存数据
使用 Berkeley DB 保存数据。若要采用Berkeley DB,可以按以下方式安装:
#tar -zxvf db-4.4.20.tar.gz
#cd db-4.4.20 /build_unix/
#../dist/configure --prefix=/usr/local/bdb
#make
#make install
在Subversion的./configure时增加以下参数:--with-berkeley-db=/usr/local/bdb
注意:暂时不能使用 Berkeley DB——svn保存文件更新数据库的方法有两个,一种是直接使用 fs (filesystem)来保存,另一种是通过Oracle提供支持的开源数据库 Berkeley DB 进行保存。但是如果加上 –with-berkeley-db=/usr/local/BerkeleyDB.4.4 就会configure时就会报错:configure: error: APR-UTIL was installed independently, it won’t bepossible to use the specified Berkeley DB: /usr/local/BerkeleyDB.4.4。所以现阶段,采取默认的fs (filesystem)就好了。
1.2 SVN服务器的启动与简单配置
1.2.1 创建仓库(repository)
创建repository,这步的创建文件夹可以直接在linux窗体系统下直接新建文件夹,或者不创建文件夹直接create project,也是可以的,系统会自己创建并初始化。
#mkdir -p /home/svn/yourproject
#svnadmin create /home/svn/yourproject
/* 建议使用如下目录结构为了符合svn说明手册上的结构*/
/home/yourprojectname/trunk
/home/yourprojectname/tags
/home/yourprojectname/branches
1.2.2 服务器端导入初始化的资源
导入source时请注意:第一个yourprojectname只是要导入的原始文档目录(可以是中文目录),而第二个才是仓库所在位置相当于项目
#svn import -m "initial import" /home/yourprojectname file:///home/svn/yourprojectname
1.2.3 启动服务
(1) 启动svn服务采用如下命令
#svnserve –d
(2) 检查服务
#lsof -i :3690
1.2.4 停止服务
停止服务命令如下:
killall svnserve
1.2.5 Linux下开机自启动SVN服务
就是自动启动svn服务的办法是在/etc/rc.local文件里添加下面的语句:
/usr/local/bin/svnserve -d ——其中/usr/local/bin 是svn的安装路径。
1.2.6 用户创建
创建用户,此处也可以直接利用linux的窗体系统,直接创建用户、组
#groupadd yourproject
#useradd -G yourprojectname -m "it's project admin." Yourprojectname
#useradd -Gyourprojectname-m "it's andy." Alu
#useradd -Gyourprojectname-m "it's jon." Jshen
#chown -Ryourprojectname.yourprojectname/home/svn/yourprojectname
#chmod 770 /home/svn/yourprojectname
#chmod -R g+w /home/svn/yourprojectname
1.2.7 修改配置
当svnadmin create /home/svn/yourproject创建仓库后,应该在仓库目录下的config目录有3个文件——authz、passwd、svnserve.conf。如需少某个,则可以手动添加。
下面对3个文件进行说明:
(4) svnserve.conf
svnserve.conf是基础的配置,用于控制访问的权限将[general]前的注释与空格去掉,一定要去掉空格,否则到时客户端登录会出现"Section header must start in the first column的”的告警!最后此文件内容至少包含以下内容:
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
其中,anon-access = none禁止匿名登录,auth-access = write为署名登录获得写权限,password-db = passwd指定用户配置文件,authz-db = authz指定权限配置文件
(5) passwd文件
passwd是用户配置文件,用于设置用户名以及密码
格式为:
[users]
<用户1> = <密码1>
<用户2> = <密码2>
其中用户名,密码不能为中文,至少我设中文登录时提示没有该用户
[users]是必须的。下面列出要访问svn的用户,每个用户一行。
示例:
[users]
alan = password
king = hello
这个里面的user表示当前test版本库的成员
(6) Authz文件
authz是详细的用户授权文件
格式如下(以下内容转载,感谢原创):
用户组格式:
[groups]
<用户组名> = <用户1>,<用户2>
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。用户必须要在passwd文件里能找到,它是给那个里面的user赋权限。
版本库目录格式:
[/目录]
@<用户组名> = <权限>
<用户名> = <权限>
示例:
[groups]
admin = alan
[/]
@admin = rw
[/svn/p1/WebProject]
king = rw(表示king能够读写/svn/p1/WebProject目录下的所有信息)
/svn/p1/web]
zp=r(表示zp能够读/svn/p1/web目录下的所有信息)
注意:示例中,@admin代表整个组,king 在这里只是一个用户
关于访问路径[/目录],其完整格式[repos-name:path]或者[path],repos-name是版本库的名字,[repos-name:path]对于采用Apache作为服务器的版本库相当关键!
注意:在authz中如果要设定中文文件夹的路径,例如[/测试],请在linux在双击文件用默认记事本打开,然后另存为,注意将编码格式改为UNICODE UTF-8,否则在windows下用TortoiseSVN进行操作时,该中文路径的权限设置会有问题!
当你用的中文svn客户端,并且又出现形如“璁よ瘉澶辫触”的错误不能够签入和签出,那么请检查authz的[path]权限等是否正确