svn源码安装-结合apache

1.源码安装
http://archive.apache.org/dist/subversion/
http://apr.apache.org/download.cgi
SVN中文网址(操作手册)
http://www.iusesvn.com/
软件版本
wget -c http://archive.apache.org/dist/subversion/subversion-1.6.19.tar.bz2
wget -c http://archive.apache.org/dist/subversion/subversion-deps-1.6.19.tar.bz2
wget -c http://mirror.bit.edu.cn/apache//apr/apr-util-1.5.2.tar.bz2
wget -c http://mirrors.cnnic.cn/apache/httpd/httpd-2.2.24.tar.bz2
wget -c http://mirror.bit.edu.cn/apache//apr/apr-1.4.6.tar.bz2

或者到我的站下载
wget -c linuxchina.net/svn.tar.bz2

#官方安装文档
#http://httpd.apache.org/docs/2.2/install.html
tar xvf apr-1.4.6.tar.bz2
cd apr-1.4.6
./configure --prefix=/usr/local/apr
make -j2 &&make install
cd ..
tar xvf apr-util-1.5.2.tar.bz2
cd apr-util-1.5.2
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
make -j 3 &&make install

#apache
tar xvf httpd-2.2.24.tar.bz2
cd httpd-2.2.24
./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr --with-included-apr --with-apr-util=/usr/local/apr-util --with-ssl --enable-ssl --enable-modules=so --enable-dav --enable-maintainer-mode
make -j 3 && make install
cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd

******
安装subversion
两个压缩包解压后都会自动放到此目录下,不用手动更改。
tar xvf subversion-1.6.19.tar.bz2 ;
tar xvf subversion-deps-1.6.19.tar.bz2
wget -c http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz
tar xvf sqlite-amalgamation-3.6.13.tar.gz
mkdir -p /root/svn/subversion-1.6.19/sqlite-amalgamation
cp sqlite-3.6.13/sqlite3.c /root/svn/subversion-1.6.19/sqlite-amalgamation/sqlite3.c
cd subversion-1.6.19
./configure --prefix=/usr/local/svn --with-apxs=/usr/local/apache/bin/apxs -with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --with-ssl
make -j2 && make install;
cp /usr/local/svn/bin/svnadmin /usr/local/sbin
/usr/local/svn/bin/svnadmin --version

vi apache/conf/httpd.conf

确保配置文件添加了如下内容(表示正确加载了SVN的模块):
# LoadModule foo_module modules/mod_foo.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
#
#然后配置仓库:(需要自己添加的内容)

DAV svn
SVNParentPath /data/svn
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /data/svn/svnpasswd
Require valid-usr
AuthzSVNAccessFile /data/svn/svnaccessfile

mkdir /data/svn -p

建立SVN版本库
cd /data/svn/#/data/svn目录是版本库目录
/usr/local/svn/bin/svnadmin create project #创建版本库project
chmod -R 777 project/
#修改权限

建立svnaccessfile
vi svnaccessfile #文件名称与apache配置的保持一致
[project:/]
evan = rw#添加能访问的版本库的用户及权限

#添加apache的用户和密码(登录apache):
/usr/local/apache/bin/htpasswd -bc svnpasswd evan 2240
# -bc 第一次创建需要c参数以后用户只要b即可 这里create 用户为evan

5测试
http://192.168.23.3/svn/project

svn co http://192.168.23.3/svn/project

×××××××××××××××

备份什么的这里没写 可以打开参考页面自己看看

错误解决
get the sqlite 3.6.13 amalgamation from:
http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz
unpack the archive using tar/gunzip and copy sqlite3.c from the
resulting directory to:
/root/svn/subversion-1.6.19/sqlite-amalgamation/sqlite3.c
This file also ships as part of the subversion-deps distribution.

sqlite-amalgamation 这个目录有时候要记得自己 mkidir

用法注意
evan@evan-laptop:~/svndoc/ywshare$ svn up
WARNING: gnome-keyring:: couldn’t connect to: /tmp/keyring-WqIsnA/pkcs11: 没有那个文件或目录
GNOME keyring [(null)] 的密码:
svn: 方法 OPTIONS 失败于 “http://192.168.1.18:8080/ywshare”: 认证失败: 不能认证到服务器: 被拒绝的 Basic 挑战 (http://192.168.1.18:8080)

GNOME keyring [(null)] 的密码: 这里随便输入个密码就行了啦 ,如果直接回车就会报如上的错误

svn install

svn install

CentOS下安装Subversion(非Apache方式)

svn源码安装-结合apache

svn源码安装-结合apache

yum install subversion mod_dav_svn httpd-devel -y #后面这几个可以不要 httpd mod_auth_mysql

mkdir -p /home/svn
svnadmin create /home/svn/evanrepo
cd /home/svn/evanrepo/conf

vim passwd

[users]
# harry = harryssecret
# sally = sallyssecret

evan = 123

用户名=密码

这样我们就建立了evan用户, 123密码

以上语句都必须顶格写, 左侧不能留空格, 否则会出错.

svnserve -d -r /home/svn/

svn import /root/evan/ file:///home/svn/evanrepo/ -m "test"

svn://192.168.1.195/evanrepo

权限控制authz配置
[root@local conf]#vim authz
目的是设置哪些用户可以访问哪些目录,向authz文件追加以下内容:
[groups] #组
admin = hello,www #创建一个admin组,将用户加入到组
[/] #根目录权限设置(就是“svn”这个文件夹)
aaa = rw #aaa对svn下的所有版本库有读写权限
[/]
* = rw
[repo:/] #repo:/,表示对repo版本库下的所有资源设置权限
@admin = rw #admin组的用户对repo版本库有读写权限
[repo2:/occi], ,表示对版本库repo2中的occi项目设置权限
[repo2:/occi/aaa], ,表示对版本库2中的occi项目的aaa目录设置权限  权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。
以上语句都必须顶格写, 左侧不能留空格, 否则会出错.

vim svnserve.conf
[general]
#匿名访问的权限,可以是read,write,none,默认为read
anon-access = none

#使授权用户有写权限
auth-access = write

#密码数据库的路径
password-db = /home/svn/evanrepo/conf/passwd

#访问控制文件
authz-db = authz

#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
realm = /home/svn/evanrepo

配置防火墙端口(或直接关闭防护墙)
[root@localhost conf]#vim /etc/sysconfig/iptables
[root@blogvps ~]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.3.5 on Mon Dec 1 11:46:36 2014
*filter
:INPUT ACCEPT [21919:42953639]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [22649:67976894]
-A INPUT -p tcp -m tcp –dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
COMMIT

添加以下内容:
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3690 -j ACCEPT
保存后重启防火墙
[root@localhost conf]#service iptables restart

[sasl]

Linux SVN 搭建
http://lxw66.blog.51cto.com/5547576/1343900

CentOS-6.3安装配置SVN
http://www.cnblogs.com/zhoulf/archive/2013/02/02/2889949.html

CentOS 上的 Subversion
http://wiki.centos.org/zh/HowTos/Subversion

CentOS下编译安装Subversion 1.7+配置+自启动(非Apache方式)
http://my.oschina.net/scriptboy/blog/75217

Subversion中文手册(svnbook)
http://svndoc.iusesvn.com/

httpd
http://www.cnblogs.com/ilazysoft/archive/2011/09/29/2195775.html

subversion 版本库数据迁移

1. 在旧服务器上将版本库导出

在原来 Subversion 安装的 Window 上将版本库导出成 dump 文件。

svnadmin dump /home/svn/evanrepo/ > myrepos.dump
经过漫长的时间得到一个庞大的转存文件 myrepos.dump,这个转存文件比原来的版本库本身大很多倍,因为在转存文件中,每个文件的每个版本都以完整的文本形式保存下来。

svnadmin dump 从版本库中读取修订版本树与其它“读者”(比如 svn checkout)的过程相同,所以可以在任何时候安全的运行这个命令。

2. 在新服务器上将版本库导入

将 myrepos.dump 文件拷贝到新服务器上,然后创建一个新的版本库,将 dump 文件导入。

svnadmin create /home/svn/evanrepos
svnadmin load /home/svn/evanrepos/ < myrepos.dump

又是等待一个漫长的时间,svnadmin load 命令会将 dump 文件中的每一个修订版本依次导入,这个过程与使用普通 Subversion 客户端直接提交到版本库的操作相同,因此最终得到一个与原来版本库一模一样的新版本库。

配置文件搞过来就行了

SVN版本库无损迁移与自动备份(一)
http://blog.csdn.net/shan9liang/article/details/7026287

linux svn三种备份迁移方法及区别
http://weiruoyu.blog.51cto.com/951650/769632

原来是程序新建议了应用 够坑 小胖搞了半天
Command: Checkout from svn://192.168.1.165:5550/infinit, revision HEAD, Fully recursive, Externals included
Updating: C:\Users\evan\Desktop\qqscan\infinit
External failed: C:\Users\evan\Desktop\qqscan\infinit\develope\templateEditor\node_modules\jsonDesc
Error: Unable to connect to a repository at URL
Error: 'svn://192.168.1.201:5550/infinit/develope/jsonDesc'
Error: 无法连接主机“192.168.1.201”: 由于目标计算机积极拒绝,无法连接。
External failed: C:\Users\evan\Desktop\qqscan\infinit\design\tools\templateEditor
Error: Unable to connect to a repository at URL
Error: 'svn://192.168.1.201:5550/infinit/develope/templateEditor'
Error: 无法连接主机“192.168.1.201”: 由于目标计算机积极拒绝,无法连接。
Completed: At revision: 29