Subversion脚本手册

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Subversion脚本手册1.SVN全备份或增量备份(一)全备份,包含两个文件hotcopy.bat和最终执行文件fullbackup.bat1)hotcopy.bat@echo正在备份版本库%1……rem@%SVN_HOME%\bin\svnadminhotcopy%1%BACKUP_DIRECTORY%\%2@%SVN_HOME%\svnadminhotcopy%1%BACKUP_DIRECTORY%\%2@echo版本库%1成功备份到了%2!2)fullbackup.batechooffremSubversion的安装目录remsetSVN_HOME=F:\ProgramFiles\SubversionsetSVN_HOME=F:\ProgramFiles\CollabNetSubversionServerrem所有版本库的父目录setSVN_ROOT=G:\SVNrem备份的目录setBACKUP_SVN_ROOT=h:\svnrootbaksetBACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,10%ifexist%BACKUP_DIRECTORY%gotocheckBackecho建立备份目录%BACKUP_DIRECTORY%%SVN_ROOT%/fullbackup.logmkdir%BACKUP_DIRECTORY%rem验证目录是否为版本库,如果是则取出名称备份for/r%SVN_ROOT%%%Iin(.)do@ifexist%%I\conf\svnserve.confhotcopy.bat%%~fI%%~nIgotoend:checkBackecho备份目录%BACKUP_DIRECTORY%已经存在,请清空。gotoend:end(二)增量备份,包含三个文件,dump.bat、最终执行文件svndump.bat和配置库名称配置projectlist.conf1)dump.bat@ECHOOFFrem调用格式:dump项目库名if%1==gotono_argssetPROJECT=%1ifnotexist%RAR_STORE%\%PROJECT%mkdir%RAR_STORE%\%PROJECT%cd%RAR_STORE%\%PROJECT%SETLOWER=0SETUPPER=0@echo项目库%PROJECT%2...%Log_PATH%\%PROJECT%_log.txt%SVN_LOOK%youngest%SVN_REPOROOT%\%PROJECT%%Log_PATH%\A.TMP@echo项目库%PROJECT%3...%Log_PATH%\%PROJECT%_log.txt@FOR/f%%DIN(%Log_PATH%\A.TMP)DOsetUPPER=%%Dif%UPPER%==0GOTO:N_EXITifnotexist%Log_PATH%\%PROJECT%_last_revision.txtGOTO:BAKUPrem取出上次备份后的版本号,并做+1处理(注意此算法未在98系统验证)@FOR/f%%CIN(%Log_PATH%\%PROJECT%_last_revision.txt)DO@setLOWER=%%C@set/ALOWER=%LOWER%+1rem不需要备份,则跳转结束IF%LOWER%gtr%UPPER%GOTO:N_EXIT:BAKUPSETFILENAME=%PROJECT%_%LOWER%_%UPPER%@ECHO开始备份项目库:%PROJECT%,生成文件=%FILENAME%%SVN_ADMIN%dump%SVN_REPOROOT%\%PROJECT%-r%LOWER%:head--incremental%FILENAME%.dmprem%RAR_CMD%a-df%PROJECT%_%UPPER%.rar%rem准备写备份日志信息IF%LOWER%gtr0GOTO:WRITENOTE@ECHO------2-----%date%%Log_PATH%\%PROJECT%_log.txt@echo--3-------添加备份文件%PROJECT%_%UPPER%.rar,从[%LOWER%]到[%UPPER%]%Log_PATH%\%PROJECT%_log.txtGOTO:COMPLETE:WRITENOTE@ECHO%date%%Log_PATH%\%PROJECT%_log.txt@echo--4------添加增量备份文件%PROJECT%_%UPPER%.rar,从[%LOWER%]到[%UPPER%]%Log_PATH%\%PROJECT%_log.txt:COMPLETErem下面一行用于拷贝备份文件到映射的驱动器上remcopy%PROJECT%.rar%RAR_STORE%\%PROJECT%\move%FILENAME%.dmp%RAR_STORE%\%PROJECT%\del%Log_PATH%\A.TMP@echo%UPPER%%Log_PATH%\%PROJECT%_last_revision.txt:N_EXIT@echo项目库%PROJECT%处理结束...%Log_PATH%\%PROJECT%_log.txt@CD..@exit/B:no_args@ECHOON@echo正确调用方法:dump项目库名2)svndump.batechooffremSubversion的安装目录及执行文件setSVN_HOME=F:\ProgramFiles\CollabNetSubversionServersetSVN_ADMIN=%SVN_HOME%\svnadmin.exesetSVN_LOOK=%SVN_HOME%\svnlook.exerem配置库仓库根目录setSVN_REPOROOT=G:\SVNrem压缩命令setRAR_CMD=E:\Progra~1\WinRAR\WinRARrem增量备份文件存放路径setRAR_STORE=H:\svnincrementWrem日志及最后一次备份修订号存放文件目录,以下是跟增量备份脚本目录同一目录setLog_PATH=G:\backup\incrementW@echo项目库%PROJECT%处理1...%Log_PATH%\%PROJECT%_log.txtrem读取项目库列表文件,并忽略其中;开头的行FOR/feol=;%%CIN(projectlist.conf)DOcallG:\backup\incrementW\dump.bat%%C3)projectlist.conf;**************************************************;01.project1开发库;更新频率:高;**************************************************PROJECT1;**************************************************;02.此处可写注释信息;**************************************************PROJECT2PROJECT3PROJECT4PROJECT52.客户端自动更新最新版本此法的前提是在配置库所在服务器上编译,如需异机编译须采用同步来实现。A.在编译机创建相应目录首先,在编译机上,要安装相应的Subversion程序(不是TSVN),在某目录下创建文件夹,如E:\Proj1。切换到命令行形式,在该文件夹下执行:svncheckoutsvn://10.XX.XX.XX/svn/proj1(就是需要检出的库目录)B.在SVN服务器端编写脚本要准备一个账户,可以检出和更新相应的配置库目录。拷贝版本库proj1文件夹(库文件)中hooks下的post-commit.tmpl为post-commit,并修改post-commit(拷贝后的post-commit依然放在hooks目录下)修改结果如下:I.编译机为windows环境的:#!/bin/shSETSVN=D:/subversion/bin/svn(D:/subversion为编译机上Subversion程序的所在位置)SETDIR=E:/Proj1(为编译机上待自动更新的目录)SVNupdate%DIR%(call%SVN%update%DIR%--username用户名--password密码--non-interactive)II.编译机为UNIX环境的:#!/bin/shSVN=/usr/bin/svn(编译机上Subversion程序的所在位置)TODIR=/home/testsvn(编译机上待自动更新的目录,TODIR可以随便起名)$SVNupdate--usernamexxx--passwordxxx$TODIRIII.编译机为LINUX及其它环境的:1).在首行#!/bin/sh后面,补全编译机环境下的脚本格式2).仿照WINDOS和UNIX的写法,编写相应脚本注:如果同时存在多个编译环境,可在首行#!/bin/sh后面补全脚本格式,在下面分别列出相应的脚本代码。或者,分别建立post-commit.bat、post-commit.sh等等。3.自动生成每日提交统计文件想知道开发人员在什么时间提交了那些文件,做的提交操作是什么,删除,增加,更新等等。在POST-COMMIT里面加如下代码:(已经在Windows下面通过,Linux大同小异)@echooffsetSCMTXTDIR=D:\SCM_Program\TortoiseSVNsetTEMPDIR=D:\tempsetREPOS=%1setREV=%2setRD=%RANDOM%setSVNTOOL=D:\SCM_Program\Subversion\bin\svn.exesetSVNLOOKTOOL=D:\SCM_Program\Subversion\bin\svnlook.exesetSVNADMINTOOL=D:\SCM_Program\Subversion\bin\svnadmin.exesvnlookinfo%REPOS%%TEMPDIR%\INFO_%RD%.txtsvnlookchanged%REPOS%%TEMPDIR%\CHG_%RD%.txt以下是获取提交的用户名sed-e1p-n%TEMPDIR%\INFO_%RD%.txt%TEMPDIR%\temp_1.txt&&for/ftokens=*%%iin(%TEMPDIR%\temp_1.txt)dosetuser=%%i以下是获取提交的时间sed-e2p-n%TEMPDIR%\INFO_%RD%.txt%TEMPDIR%\temp_2.txt&&for/ftokens=*%%jin(%TEMPDIR%\temp_2.txt)dosetdtime=%%j以下是获取提交的Comment信息sed-e4p-n%TEMPDIR%\INFO_%RD%.txt%TEMPDIR%\temp_3.txt&&for/ftokens=*%%kin(%TEMPDIR%\temp_3.txt)dosetLOG_MSG=%%k获取提交的文件列表cat%TEMPDIR%\CHG_%RD%.txt|seds/^D/DeletedFile/|seds/^A/AddedFile/|seds/^U/UpdatedFile/|seds/^_U/UpdatedProperty/%TEMPDIR%\CHG_%RD%_2.txt把提交的信息按照文件名@日志信息@时间@用户的格式写到日期文件夹里面去ifnotexistD:\temp\Sourcecode\%date:~0,10%mkdirD:\temp\Sourcecode\%date:~0,10%catcat%TE

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功