下面的Windows命令解释器脚本实现了“导出本机svn版本库中MyProjName项目指定版本范围内的可移植版本库。并自动用项目名、起始版本号和终止版本号命名导出的dump文件。”
将下列文件正文内容复制到一个新建的cmd/bat文件中即可。
文件正文
@ECHO ********************************************************************
@ECHO *** ***
@ECHO *** 脚本功能: ***
@ECHO *** 导出MyProjName项目指定版本范围内的可移植版本库。 ***
@ECHO *** ***
@ECHO *** 版本: ***
@ECHO *** DumpSvn version 0.9c ***
@ECHO *** ***
@ECHO *** 版权: ***
@ECHO *** 本脚本采用GNU GPL版权协议分发。 ***
@ECHO *** ***
@ECHO *** 说明: ***
@ECHO *** 本脚本最初作为MyProjName项目的软件维护工具开发。 ***
@ECHO *** 本脚本作为示例,稍加修改可用于其他类似用途 ***
@ECHO *** ***
@ECHO *** 作者:svnLight ***
@ECHO *** E-Mail: dxnb007@yahoo.com.cn ***
@ECHO *** ***
@ECHO *** 创建日期:2008年06月23日 ***
@ECHO *** 初始版本0.9 ***
@ECHO *** ***
@ECHO *** 修订历史: ***
@ECHO *** ***
@ECHO *** 0.9c) ***
@ECHO *** 1. 提示最新的版本号。 ***
@ECHO *** ***
@ECHO *** 0.9b) ***
@ECHO *** 1. 当起始版本号大于终止版本号,颠倒版本号顺序。 ***
@ECHO *** ***
@ECHO *** 0.9a) ***
@ECHO *** 1. 识别版本号为0的情况。 ***
@ECHO *** 2. 限制起始版本号不大于终止版本号。 ***
@ECHO *** ***
@ECHO *** 0.9) ***
@ECHO *** 1. 自动识别起始版本号和终止版本号是否为空。 ***
@ECHO *** 2. 自动识别起始版本号和终止版本号是否为数字。 ***
@ECHO *** 3. 用法错误自动提示。 ***
@ECHO *** ***
@ECHO ********************************************************************
@ECHO OFF && setlocal
:: 指定svn版本库的绝对路径
@set SVNDIR=E:/ROOT/SVN-ROOT/MyProjName/
@ECHO 欢迎使用svn dump版本库移植工具。
@for /F %%I in ('svnlook youngest %SVNDIR%') do @set /A revs_last=%%I
@ECHO Current Revision: %revs_last%
:: 需要两个命令行参数。
@if "" == "%2" goto Usage
@if "" == "%1" goto Usage
::
:: 任何一个命令行参数不是数值,则提示错误。
@set /A revs_start=%1
@set V1=%1
@if %revs_start% EQU 0 @if not "%V1:~0,1%"=="0" goto Usage
@set /A revs_end=%2
@set V2=%2
@if %revs_end% EQU 0 @if not "%V2:~0,1%"=="0" goto Usage
::
:: 如果起始版本号大于终止版本号则颠倒顺序。
@if %revs_start% GTR %revs_end% goto SwapOrder
@set NewDumpFile="./MyProjName.%1_%2.dump"
@if exist %NewDumpFile% del %NewDumpFile%
@svnadmin dump %SVNDIR% -r %1:%2 --incremental > %NewDumpFile%
@ECHO 生成svn dump文件%NewDumpFile%。
@goto ExitEntry
:SwapOrder
@set NewDumpFile="./MyProjName.%2_%1.dump"
@if exist %NewDumpFile% del %NewDumpFile%
@svnadmin dump %SVNDIR% -r %2:%1 --incremental > %NewDumpFile%
@ECHO 生成svn dump文件%NewDumpFile%。
@goto ExitEntry
::
:: 提示用法。
:Usage
@ECHO Usage:
@ECHO %0 起始版本号 终止版本号
@ECHO %0 rev-start rev-end
@ECHO Example:
@ECHO %0 100 234
@ECHO .
::
:ExitEntry
@endlocal