SVN服务端配置:svn (subversion)+Apache(httpd)+SSL(openssl)


tar zxvf openssl-0.9.8b.tar.gz
cd openssl-0.9.8b
make && make install
cd ..

tar xvzf apr-1.3.7.tar.gz
./configure
make&&make install

tar xvzf apr-util-1.3.8.tar.gz
./configure --with-apr=/usr/local/apr/bin/apr-1-config
make&&make install

tar zxvf httpd-2.2.15.tar.gz
./configure --prefix=/usr/local/apache/ --enable-dav --enable-so --enable-maintainer-mode --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config --enable-ssl=static --with-ssl=/usr/local/ssl
make && make install
grep -v "#" /usr/local/apache/bin/apachectl  > /etc/init.d/httpd
sed -i '1i #! /bin/sh\n# chkconfig: 2345 85 15\n# description: Apache is a World Wide Web server.' /etc/init.d/httpd
chmod 755 /etc/init.d/httpd
chkconfig --add httpd
service httpd restart

 

tar xvzf neon-0.28.4.tar.gz  
./configure --with-ssl
make&&make install
 
tar zxvf subversion-1.6.11.tar.gz
cd subversion-1.6.11
./configure --prefix=/usr/local/svn --with-neon=/usr/local/
make && make install
ln -s /usr/local/svn/bin/svn /usr/bin/svn
ln -s /usr/local/svn/bin/svnadmin /usr/bin/admin
  

vi /usr/local/apache/conf/httpd.conf
添加:                   
<Location /svn>
     DAV svn
     SVNParentPath /usr/local/svn/repos
     AuthType Basic
     AuthName "Subversion repository"
     AuthUserFile /usr/local/svn/passwd
     AuthzSVNAccessFile /usr/local/svn/auth
     Require valid-user
     SSLRequireSSL
</Location>
去掉注释:Include conf/extra/httpd-ssl.conf
cd /usr/local/apache/conf/
openssl req -new -x509 -nodes -out server.crt -keyout server.key

 
新建账户权限文件和密码文件:

vi /usr/local/svn/auth

[groups]
[test:/]
test = r
testadmin = rw


/usr/local/apache/bin/htpasswd -c /usr/local/svn/passwd testadmin    ——>产生账户密码
/usr/local/apache/bin/htpasswd /usr/local/svn/passwd test

添加svn 防火墙
上传 svn_ip_list 和svn-iptbales.sh 到 qeedoodb下 ,执行 svn-iptables.sh

新建仓库
   创建仓库目录 svnadmin create /usr/local/svn/repos/test
   创建工作目录 mkdir -p /svn_update_data/test
   导入初始版本 svn import /svn_update_data/test file:///usr/local/svn/repos/test -m "initial import"
   同步工作目录  /usr/local/svn/bin/svn  --force checkout file:///usr/local/svn/repos/test/ /svn_update_data/test/

手动更新仓库版本
   更新工作目录  cd /svn_update_data/mh/ && svn update
   手动更新文件
   更新仓库文件 svn --force add  /svn_update_data/test/*
   生成新版本   cd /svn_update_data/test/ && svn commit -m "version update by who"

从外部客户端更新仓库版本:  /usr/local/svn/bin/svn --username testadmin --force checkout https://192.168.189.150/svn/test/ /svn_update_data/test
   更新工作目录 cd /svn_update_data/test/ && svn update
   手动更新文件
   更新仓库文件 svn --force add  /svn_update_data/test/*
   生成新版本   cd /svn_update_data/test/ && svn commit -m "version update by testadmin"

客户端配置:svn (subversion)

tar zxvf subversion-1.6.11.tar.gz
cd subversion-1.6.11
./configure --prefix=/usr/local/svn --with-ssl
make &&make install

ln -s /usr/local/svn/bin/svn /usr/bin/


Q&A

1.虚拟机里的版本是旧的,必须与仓库同步后才能开服
没法直接拉仓库里的文件;只能删除版本 ,然后直接从仓库拉版本(直接checkout就可以)

2.版本回滚(待完善)
svn merge -r 11:10 file:///subversion/data/svn/repos/res/  (回滚到本地)
svn commit --message "roll back to r10"  (提交仓库)
svn up -r 11 (单机 回滚或到指定版本)

3.权限控制,工作目录与仓库目录权限
工作目录转移到本地;s66权限设置

4.有些文件不能import到仓库

5.怎么切换仓库地址
svn switch --relocate https://192.168.189.150/svn/test/ https://192.168.189.151/svn/test/

6.怎么备份svn 仓库
svnadmin dump --deltas /usr/local/svn/repos/test |bzip2 > dump.bz2

7.怎么恢复svn备份到新的仓库
bzcat dump.bz2 | svnadmin load /usr/local/svn/repos/test

8.convmv -f GBK -t utf8 -r ./ --notest

9.怎么改变文件的可执行权限
svn propset svn:executable on iFuncity