转自: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,回车,显示如下:

 

 

  1. usage: svn <subcommand> [options] [args]
  2. Subversion command-line client, version 1.6.1.
  3. Type 'svn help <subcommand>' for help on a specific subcommand.
  4. Type 'svn --version' to see the program version and RA modules
  5. or 'svn --version --quiet' to see just the version number.
  6. Most subcommands take file and/or directory arguments, recursing
  7. on the directories. If no arguments are supplied to such a
  8. command, it recurses on the current directory (inclusive) by default.
  9. Available subcommands:
  10. add
  11. blame (praise, annotate, ann)
  12. cat
  13. changelist (cl)
  14. checkout (co)
  15. cleanup
  16. commit (ci)
  17. copy (cp)
  18. delete (del, remove, rm)
  19. diff (di)
  20. export
  21. help (?, h)
  22. import
  23. info
  24. list (ls)
  25. lock
  26. log
  27. merge
  28. mergeinfo
  29. mkdir
  30. move (mv, rename, ren)
  31. propdel (pdel, pd)
  32. propedit (pedit, pe)
  33. propget (pget, pg)
  34. proplist (plist, pl)
  35. propset (pset, ps)
  36. resolve
  37. resolved
  38. revert
  39. status (stat, st)
  40. switch (sw)
  41. unlock
  42. update (up)
  43. Subversion is a tool for version control.
  44. 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。

 

 

  1. @echo off
  2. set svnpath="H:/QQDrPrj/APP/LightDog/QQDoctor3.2/Output"
  3. h:
  4. cd %svnpath%
  5. svn update
  6. pause

 

3、checkout的使用方法,checkout就是把代码或者其他资料从服务器上下载到本地的意思,所以是要指明服务器的地址的,首先你也要进到一个目的文件夹(就是你要把代码下载到哪儿),然后就可以执行svn checkout https://xxxx/out了。下面一段脚本是将typedef文件夹下的所有文件包括typedef文件夹更新到h盘根目录下。(注意,运行之后,如果是第一次运行很可能向你询问用户名和密码等信息)

 

 

  1. @echo off
  2. set svnpath="H:"
  3. h:
  4. cd %svnpath%
  5. svn checkout https://xx.x.xx.xx:xxxx/svn/ims/APP/Output/TypeDef
  6. pause

 

4、commit提交代码到服务器上,和update的使用方法类似,但是要记录一个log信息[加上 -m ""],svn commit -m ""。或者注册环境变量SVN_EDITOR也可以(譬如注册一个环境变量名为SVN_EDITOR,值为notepad.exe的环境变量),这样的话直接svn commit也可以,如果你既没有加-m ""又没有注册SVN_EDITOR环境变量,那么执行此命令时会报如下的错误:

 

 

  1. svn: Commit failed (details follow):
  2. svn: Could not use external editor to fetch log message; consider setting the $S
  3. VN_EDITOR environment variable or using the --message (-m) or --file (-F) option
  4. s
  5. svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR are set, and
  6. no 'editor-cmd' run-time configuration option was found

 

5、add代码或者文件到服务器,这个命令其实比较少使用命令行进行,嘿嘿!运行时要确保当前目录下有你要增加的文件或者文件夹,直接执行 svn add myfile.txt 或者 svn add myforder,例如:下面是将h盘下Documents目录下的engine文件夹增加到svn中(前提是Documents是一个svn的工作目录,否则会执行失败)。

 

 

  1. @echo off
  2. set svnpath="H:/Documents"
  3. h:
  4. cd %svnpath%
  5. svn add engine
  6. pause

 

6、cleanup清理命令,能够清理某个目录下的一些执行失败的事务,和update的用法类似。

7、log查看日志,可以查看某个目录或者文件的日志信息,这个可以在执行一批命令后再检查下是否执行正确。用法很简单,类似add命令,下面是查看Documents下面myfile.txt文件的日志。

 

 

  1. @echo off
  2. set svnpath="H:/Documents"
  3. h:
  4. cd %svnpath%
  5. svn log "myfile.txt"
  6. pause

 

svn的命令就介绍到这里了,可以和vc的命令汗联合起来,这样就可以直接更新编译了,如下:

 

 

  1. @echo off
  2. @echo 请使用svn更新文件
  3. set svnpath="h:/myprj/VulInfoDataBase"
  4. h:
  5. cd %svnpath%
  6. svn update
  7. explorer.exe "h:/myprj/VulInfoDataBase"
  8. pause
  9. @echo 编译
  10. msdev "h:/myprj/VulInfoDataBase/VulChk/myprj.dsw" /MAKE "TSVulChk - Win32 Release"
  11. pause

 

posted on 2011-12-07 11:16  Shark Xu  阅读(3929)  评论(0编辑  收藏  举报
为汶川地震死难者哀悼!