

























SVN
安装subversion,我选择的是svn-1.4.1-setup.exe进行安装,安装到
D
也就是建立版本库,我建立的是多库,先在D盘建立一个文件夹SVNROOT,然后在这个文件夹里建立版本库,我首先创建一个版本库的名称为:工作文档
建立版本库的方法:输入DOS命令:
svnadmin create D:\SVN\
repository
配置服务器的地方就是你所建立版本库的地方F:\SVNROOT\工作文档。
打开/conf/目录,打开svnserve.conf找到下面的句子:
[general]
# password-db = passwd
# anon-access = none
# auth-access = write
# authz-db = authz
# realm = My First Repository
去之每行开头的#,其中第二行是指定身份验证的文件名,即passwd文件.anon-access = none 是匿名用户不能访问,必须要有用户名和密码。(注意:问题就出在这,一定要注意格式去掉注释后要顶格不能有空)
同样打开passwd文件,将
# harry = harryssecret
# sally = sallyssecret
格式为“用户名 = 密码”,如可插入一行:mm = mm,即为系统添加一个用户名为mm,密码为mm的用户.(注意顶格写不要有空隙)。
单库下运行服务器的方式:
SVN
svnserve --daemon --root D:\SVN\
可以简写为:svnserve -d –r D:\SVN\工作文档
(注意:这是临时打开的服务,命令执行后不能关闭窗口)
用后台服务的方式可以设置开机自动执行,执行语句为:
D:\ Subversion\bin>sc create svnservice binpath= "d:\ Subversion\bin\svnserve.exe --service –r D:\SVN\
就可以用net svnservice stop 或者start来启动服务了 也可以在Sevices.msc来启动了。
多库下运行服务器的方式:
SVN
svnserve –d –r D:\SVN
(
用后台服务的方式可以设置开机自动执行,执行语句为:
sc
create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r
D:/SVN" displayname= "SVNService" depend= Tcpip start= auto
SVN
多库下设置权限:
jsm
wrl
sb
对应的组及组的用户:
group_CMMI
group_wjjc:wrl
group_xczh:sb
配置授权:
[groups]
group_CMMI = jsm
group_wjjc = wrl
group_xczh = sb
[/]
* = r
[
@group_CMMI = rw
@group_wjjc = rw
@group_xczh = r
[
@group_CMMI = rw
@group_wjjc =
@group_xczh =
关
于中文目录,也是没有问题的,只是注意要把authz文件转化为UTF-8无BOM格式,在我的WINXP的UltraEdit里显示的文件格式为U8-
DOS,具体的做法是用UltraEdit打开authz文件,然后选择“文件->转换->ASCII转UTF-8”,然后保存。
利用UltraEdit我们可以将BOM去掉。方法是:首先利用“UTF-8 TO ASCII”菜单将文件转换成本地编码,通常是GB2312码,然后再使用“ASCII TO UTF-8(UNICODE Editing)”来转换到 UTF-8 即可
备份共分为三种:一个是:完全备份,增量备份,同步版本库
(1)利用语句实现备份
例如把d:\SVN中的版本库 xuexi 备份到 d:\SVNBAK 的目录下,只需要在DOS 的环境下运行:
Svnadmin hotcopy d:\SVN\xuexi d:\SVNBAK\xuexi
本次的操作成功的把版本库备份了。可是此操作只是把一个根目录下的一个版本库备份了,所以这样操作会很繁琐的。
(2)利用脚本完成的完全备份,这种备份可以实现一个根目录下的所有版本库的备份。
此时要在D:\SVN下创建2个文件。
一个文件是simpleBackup.bat :
@%SVN_HOME%\bin\svnadmin hotcopy %1 %BACKUP_DIRECTORY%\%2
@echo 版本库%1成功备份到了%2!
一个文件是 backup.bat
echo off
rem Subversion
set SVN_HOME="D:\Subversion"
rem
set SVN_ROOT=D:\SVN
rem
set BACKUP_SVN_ROOT=D:\SVNBAK
set BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,10%
if exist %BACKUP_DIRECTORY% goto checkBack
echo
mkdir %BACKUP_DIRECTORY%
rem
for /r %SVN_ROOT% %%I in (.) do @if exist "%%I\conf\svnserve.conf" % SVN_ROOT%\simpleBackup.bat "%%~fI" %%~nI
goto end
:checkBack
echo
goto end
:end
把
这两个文件放到D:\SVN 中后,可以直接运行backup.bat ,然后会发现在SVNBAK 文件夹中出现了备份的文件夹2008-02-19
,这样D:\SVN
目录下的所有的版本库就都备份到了D:\SVNBAK\2008-02-19中,这项利用脚本的操作可以直接的把一个根目录中的所有的版本库备份了。
为了不遗忘备份,我们需要把备份的操作加入到系统的at当中去,运行:
at 12:35 /everyday D:\SVN\backup.bat
2.
首先是需要在 学习 的hooks目录下建立2个文件。一个文件是:post-commit.bat:
echo off
set SVN_HOME="D:\Subversion"
set SVN_ROOT=D:\SVN
set UNIX_SVN_ROOT=D:\SVNBAK
set DELTA_BACKUP_SVN_ROOT=D:\SVNBAK\delta
set LOG_FILE=%1\backup.log
echo backup revision %2 >> %LOG_FILE%
for /r %SVN_ROOT% %%I in (.) do if D:/svnroot/%%~nI == %1 %SVN_ROOT%\%%~nI\hooks\deltaBackup.bat %%~nI %2
goto end
:end
一个文件是 deltaBackup.bat:
@echo
%SVN_HOME%\bin\svnadmin dump %SVN_ROOT%\%1 --incremental --revision %2 >> %DELTA_BACKUP_SVN_ROOT%\%1.dump
@echo 版本库%2成功备份到了%3!
通过post-commit.bat这个脚本,可以实现D:\SVN下的版本库提交时自动增量备份到D:\SVNBAK\delta(确定这个目录存在)。把这两个目录直接考到 xuexi 下面就可以直接实现xuexi 的自动备份。
3.
Subversion 1.4
3.1.
svnsync init svn://localhost/project2 svn://localhost/project1
其中project2是目标的版本库,而project1是源版本库。其中的目标版本库必须为空,而且必须允许修订版本属性的修改,也就是在目标的版本库的hooks目录里添加一个文件pre-revprop-change.bat,内容为空即可。
3.2.
svnsync sync svn://localhost/project2
这
时候你update一下你的project2的一个工作拷贝,就会发现有了project1的所有内容。如果project1又有提交,这时候
project2的版本库无法看到最新的变化,还需要再运行一遍sync操作,这样才能将最新的变化同步。需要注意的是,目标版本库只能做成只读的,如果
目标版本库发生了变更,则无法继续同步了。
3.3.
因为同步不会更新对历史属性的修改,所以svnsync还有子命令copy-revprops,可以同步某个版本的属性。
3.4.
希望在每次提交时同步,则需要在源版本库增加post-commit脚本,内容如下:
echo
set SVN_HOME="D:\Subversion"
%SVN_HOME%\bin\svnsync sync --non-interactive svn://localhost/project2
把以上内容存放为post-commit.bat,然后放到版本库project1下的hooks目录下,这样project1每次提交,都会引起project2的同步。
4
我所有的目录在d:\SVN上,我的备份的目录是 d:\svn_bak
第一个文件是调度脚本 svndump.bat:
@echo off
@echo =================
@echo
@echo 1
@echo 2
@echo 3
@echo
@echo =================
rem set logfile=svn_bak.log
set SVN_HOME=D:\Subversion\bin
set SVN_ADMIN="%SVN_HOME%\svnadmin.exe"
set SVN_LOOK="%SVN_HOME%\svnlook.exe"
set SVN_REPOROOT=d:\SVN
set RAR_CMD="C:\Program Files\WinRAR\Rar.exe"
rem if not exist z:\nul net use z: \\192.168.2.226\g$\svndump
rem
FOR /f "eol=;" %%C IN (projectlist.conf) DO @call dump.bat %%C
第二个文件是备份脚本 dump.bat :
@ECHO OFF
rem
if "%1"=="" goto no_args
set PROJECT=%1
if not exist %PROJECT% mkdir %PROJECT%
cd %PROJECT%
SET LOWER=0
SET UPPER=0
@FOR /f %%D IN ('%SVN_LOOK% youngest %SVN_REPOROOT%\%PROJECT%') DO set UPPER=%%D
if %UPPER%==0 GOTO :N_EXIT
if not exist %PROJECT%_last_revision.txt GOTO :BAKUP
rem
@FOR /f %%C IN (%PROJECT%_last_revision.txt) DO @set LOWER=%%C
@set /a LOWER=%LOWER%+1
rem
IF %LOWER% gtr %UPPER% GOTO :N_EXIT
:BAKUP
SET FILENAME=%PROJECT%_%LOWER%_%UPPER%
@ECHO
%SVN_ADMIN% dump %SVN_REPOROOT%\%PROJECT% -r %LOWER%:head --incremental >%FILENAME%.dmp
%RAR_CMD% a -df %PROJECT%_%UPPER%.rar %FILENAME%.dmp
rem
IF %LOWER% gtr 0 GOTO :WRITENOTE
if not exist %PROJECT%_log.txt @copy ..\log.conf %PROJECT%_log.txt
@ECHO %date% >> %PROJECT%_log.txt
@echo --
GOTO :COMPLETE
:WRITENOTE
@ECHO %date% >> %PROJECT%_log.txt
@echo --
:COMPLETE
rem
rem copy %PROJECT%.rar z:\%PROJECT%\
@echo %UPPER% > %PROJECT%_last_revision.txt
:N_EXIT
@echo
@CD..
@exit /B
:no_args
@ECHO ON
@echo "
第3个文件是项目库列表projectlist.conf需要备份的清单,每个项目一行
学习
Xuexi
学习备份
第4个文件是日志模版脚本log.conf :
备份日志:
在备份的文件夹中加上这四个文件,然后运行svndump.bat ,就会出现:学习,
Xuexi
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。