转自:http://blog.csdn.net/magictong/article/details/5206546
原作者若觉得有侵权行为,请立即与我联系,本人立即处理。
在进行大量svn更新和多个工程联合编译时,如果是对你来说是一件经常重复做的事情,譬如更新代码编译版本;更新代码,编译版本并升级之类的重复性很高,枯燥而且容易出错的事情,使用批处理来统一管理和处理将大大简化工作流程,使编版本,升级成为一件快乐的事情,想一下,要升级了,准备工作做好后,运行下批处理,“哗哗”就跟你有条不紊的做好了,多么惬意的一件事情,而且不可能产生人为原因的错误,要统一批处理化,那就自然要熟悉各种工具的命令行了,首先来看看svn的,嘿嘿。
svn的命令行的详细使用,这篇文章讲得比较详细:http://www.open.collab.net/scdocs/ddUsingSVN_command-line.html.zh-cn,但是一般开发人员用不了这么多,下面简单介绍我常用的5-6个:
1、help,查看有你当前的svn版本支持哪些命令,在控制台下输入svn help,回车,显示如下:
- usage: svn <subcommand> [options] [args]
- Subversion command-line client, version 1.6.1.
- Type 'svn help <subcommand>' for help on a specific subcommand.
- Type 'svn --version' to see the program version and RA modules
- or 'svn --version --quiet' to see just the version number.
- Most subcommands take file and/or directory arguments, recursing
- on the directories. If no arguments are supplied to such a
- command, it recurses on the current directory (inclusive) by default.
- Available subcommands:
- add
- blame (praise, annotate, ann)
- cat
- changelist (cl)
- checkout (co)
- cleanup
- commit (ci)
- copy (cp)
- delete (del, remove, rm)
- diff (di)
- export
- help (?, h)
- import
- info
- list (ls)
- lock
- log
- merge
- mergeinfo
- mkdir
- move (mv, rename, ren)
- propdel (pdel, pd)
- propedit (pedit, pe)
- propget (pget, pg)
- proplist (plist, pl)
- propset (pset, ps)
- resolve
- resolved
- revert
- status (stat, st)
- switch (sw)
- unlock
- update (up)
- Subversion is a tool for version control.
- For additional information, see http://subversion.tigris.org/
如果你想查看某个具体命令的使用,直接svn help [command]即可,譬如想看看checkout的用法:svn help checkout,显示内容比较多,自己去看看吧。
2、update的用法,这个应该是用得最多的一个命令(或者叫操作吧)了,使用很简单,你要更新哪个目录,就先进到那个目录,然后在那个目录下运行svn update。譬如你要更新目录:H:/QQDrPrj/APP/LightDog/QQDoctor3.2/Output。
- @echo off
- set svnpath="H:/QQDrPrj/APP/LightDog/QQDoctor3.2/Output"
- h:
- cd %svnpath%
- svn update
- pause
3、checkout的使用方法,checkout就是把代码或者其他资料从服务器上下载到本地的意思,所以是要指明服务器的地址的,首先你也要进到一个目的文件夹(就是你要把代码下载到哪儿),然后就可以执行svn checkout https://xxxx/out了。下面一段脚本是将typedef文件夹下的所有文件包括typedef文件夹更新到h盘根目录下。(注意,运行之后,如果是第一次运行很可能向你询问用户名和密码等信息)
- @echo off
- set svnpath="H:"
- h:
- cd %svnpath%
- svn checkout https://xx.x.xx.xx:xxxx/svn/ims/APP/Output/TypeDef
- pause
4、commit提交代码到服务器上,和update的使用方法类似,但是要记录一个log信息[加上 -m ""],svn commit -m ""。或者注册环境变量SVN_EDITOR也可以(譬如注册一个环境变量名为SVN_EDITOR,值为notepad.exe的环境变量),这样的话直接svn commit也可以,如果你既没有加-m ""又没有注册SVN_EDITOR环境变量,那么执行此命令时会报如下的错误:
- svn: Commit failed (details follow):
- svn: Could not use external editor to fetch log message; consider setting the $S
- VN_EDITOR environment variable or using the --message (-m) or --file (-F) option
- s
- svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR are set, and
- no 'editor-cmd' run-time configuration option was found
5、add代码或者文件到服务器,这个命令其实比较少使用命令行进行,嘿嘿!运行时要确保当前目录下有你要增加的文件或者文件夹,直接执行 svn add myfile.txt 或者 svn add myforder,例如:下面是将h盘下Documents目录下的engine文件夹增加到svn中(前提是Documents是一个svn的工作目录,否则会执行失败)。
- @echo off
- set svnpath="H:/Documents"
- h:
- cd %svnpath%
- svn add engine
- pause
6、cleanup清理命令,能够清理某个目录下的一些执行失败的事务,和update的用法类似。
7、log查看日志,可以查看某个目录或者文件的日志信息,这个可以在执行一批命令后再检查下是否执行正确。用法很简单,类似add命令,下面是查看Documents下面myfile.txt文件的日志。
- @echo off
- set svnpath="H:/Documents"
- h:
- cd %svnpath%
- svn log "myfile.txt"
- pause
svn的命令就介绍到这里了,可以和vc的命令汗联合起来,这样就可以直接更新编译了,如下:
- @echo off
- @echo 请使用svn更新文件
- set svnpath="h:/myprj/VulInfoDataBase"
- h:
- cd %svnpath%
- svn update
- explorer.exe "h:/myprj/VulInfoDataBase"
- pause
- @echo 编译
- msdev "h:/myprj/VulInfoDataBase/VulChk/myprj.dsw" /MAKE "TSVulChk - Win32 Release"
- pause