–Subversion 1.4.4安装目录:D:\software\Subversion
–Apache HTTPServer 2.0.54
访问端口:8080
–版本库存放路径:E:\SVNLIB
VisualSVN-Server-2.1.9
集成:
– Subversion 1.6.17
安装目录:D:\Program Files\VisualSVN Server
– Apache HTTPServer 2.2.19
访问端口:8080
–版本库目录结构: G:\Repositories
VisualSVN Server 是一款免费的SVN服务器端系统,VisualSVN Server集成了Subversion和Apache,安装的时候SVN
Server已经封装为windws
service可以随Windows一起自动启动,Apache服务器的配置也只是在图像界面上,指定认证方式、访问端口等简单操作;另外,用户权限的管理也是通过图像界面来配置,使用起来非常方便。
a4c26d1e5885305701be709a3d33442f.png
操作步骤
第一步:
在Subversion的bin目录下使用dump命令导出旧SVN版本库
l
CMD打开命令窗口,使用命令操作版本库
l
版本库位置 E:\SVNLIB\SVNRepository
l
命令如下:
(导出的文件异常大,而且很耗时,37G的仓库导出后大概是61G,大约用2个小时时间)
第二步:
在版本服务器上安装VisualSvn
Server,按操作点击下一步,其中只需要注意下面这个界面可以自定义安装目录,和URL链接方式。
第三步:
在VisualSVN
Server的bin目录下使用create命令和load命令导入旧版本库
CMD打开命令窗口,使用命令操作版本库
#新建版本库
svnadmin create
G:\Repositories\SVNRepository
#版本库导入
svnadmin load G:\ Repositories\SVNRepository
< G:\TestBack\SVNRepositoryDumpfile
(导入过程异常缓慢61G的dump文件大概用了14个小时才完成导入)
使用VisualSVN Server导入旧项目的方法
先暂停原VisualSVN Server 服务将SVN仓库目录拷贝到新的VisualSVN
Server仓库目录下,使用VisualSVN Server的Import Existing Repository 菜单导入
第五步:
使用VisualSVN
Server 建立用户和用户组,配置用户组访问权限或直接导入原有权限文件。
在windows 环境下面,svn可以通过配置钩子函数(hook),实现一些很有用的功能,下面逐一作介绍。可以修改代码库下面的hooks 的所有以.tmpl 文件,这些文件都是svn提供的钩子模板。在windows环境下面通过批处理命令容易实现这样的一些功能。
强制要求提交日志
在每次提交的时候写明提交的目的是一个很好的习惯,Subversion默认没有提供,但是可以通过钩子实现:
将下面的代码存为pre-commit.bat放到版本库的hooks目录下即可,当你不写日志提交或者提交的日志内容少于5个汉字或10个英文字符就会报告错误。
@echo off
setlocal
set REPOS=%1
set TXN=%2
rem check that logmessage
contains at least 10 characters
svnlook log “%REPOS%” -t
“%TXN%” | findstr “…” > nul
if %errorlevel% gtr 0 goto
err
exit 0
:err
echo 提交必须填写日志!Empty log
message not allowed. Commit aborted!
1>&2
exit 1
修改完需要重启SVN服务
备份策略
svn备份一般采用三种方式:
1)svnadmin dump
2)svnadmin hotcopy
3)svnsync
注意,svn备份不宜采用普通的文件拷贝方式(除非你备份的时候将库暂停),如copy命令、rsync命令。
(实验证明从版本库中直接用windows copy或rsync命令copy出来的库根本不可用,因此最好是用svn本身提供的功能来进行备份。)
备份实现步骤
最终根据研究中心现实情况使用第二种svnadmin hotcopy方式进行备份。在G:\Repositories目录下建立两个批处理文件:Backpu.bat和SimpleBackup.bat编写脚本,并结合windows维护计划定期执行Backup.bat实现版本库定期全量备份。
Backup.bat脚本如下:
@echo off
set SVN_HOME=“C:\Program Files\VisualSVN Server”
set SVN_ROOT=“G:\Repositories”
set BACKUP_SVN_ROOT=“G:\Repositories_backup”
set BACKUP_DIRECTORY=�CKUP_SVN_ROOT%\�te:~0,10%
if exist �CKUP_DIRECTORY% goto checkBack
echo
�CKUP_DIRECTORY%>>%SVN_ROOT%/backup.log
mkdir �CKUP_DIRECTORY%
for /r %SVN_ROOT% %%I in (.) do @if exist “%%I\conf\svnserve.conf”
%SVN_ROOT%\simplebackup.bat “%%~fI” %%~nI
goto end
:checkBack
@echo �CKUP_DIRECTORY%
goto end
:end
SimpleBackup.bat脚本:
@echo 正在备份版本库%1…
@%SVN_HOME%\bin\svnadmin hotcopy %1 �CKUP_DIRECTORY%%2
@echo 版本库%1成功备份到了%2!
goto clean
:clean
del /Q �CUP_SVN_ROOT%\ModifiedBackup*.dump
goto end
:end
实现客户端修改用户密码
因为VisualSVN也提供收费的客户端软件,在客户端软件里有修改密码功能,但是我们使用的是免费的TortoiseSVN,所以需要手工配置客户端密码修改功能。需要用到ApachePasswd客户端修改密码程序包 Apache22Passwd.rar
操作步骤:
将mod_cgi.so copy到****\VisualSVN Server\bin目录下,这是cgi得以执行的必须包
在VisualSVN Server下创建cgi-bin目录,将文件Apache22Passwd.cgi及Apache22Passwd.cgi.ini复制到Apache的CGI脚本目录下,通常是cgi
-bin目录。(这句话中的x请用相应的版本代替,如for
apache2.0,则为Apache20Passwd.cgi)
如果是for apache2.2版本,复制apache的bin目录下libapr-1.dll、libapriconv-1.dll、libaprutil-1.dll到Apache2xPasswd.cgi所在的目录
修改配置文件Apache2xPasswd.cgi.ini中auth_user_file路径,如下
[path]
auth_user_file=这里改为你的Subversion所用的AuthUserFile全路径,如C:\SVN_repos\passwd
现在访问你服务器的http://localhost/cgi-bin/Apache2xPasswd.cgi就可以看到修改subversion密码的界面了。(一般为了简化路径的拼写,可以将Apcache22Passwd.cgi改为pwd.cgi 相应配置文件名也要修改)
打开IE浏览器输入可弹出密码修改页