读《Subversion 权威指南》(svnbook-1.5-final-zh.pdf)的一些记录,怕以后忘了。重点是第4章。
1. 常用SVN命令表
命令
说明
svn up/diff/commit
可用-r指定版本
svn diff –r 2:3 a.c
svn diff –c 3 a.c
比较repo中两个版本的差异
-c表示--change
svn status –v
svn status –u –v
Verbose
-u表示--show-updates,显示可更新文件(*)
svn log –v
svn log -g
verbose
-g表示—use-merge-history,对merge的改动显示原始commit的人,例子见《Subversion 权威指南》Section 4.4.6
svn revert –R .
取消本地修改
2. 很实用的“非”常用命令表
命令
说明
例子
svnadmin create
新建repo
$ svnadmin create /var/svn/newrepos
svn import
Import项目
$ svn import mytree file:///var/svn/newrepos/some/project
-m "Initial import"
Adding mytree/foo.c
Adding mytree/bar.c
Adding mytree/subdir
Adding mytree/subdir/quux.h
Committed revision 1.
svn cat file@ver > a.txt
输出某个文件的某个版本
 
svn list –v
显示文件详细信息
$ svn list -v http://svn.collab.net/repos/svn
20620 harry 1084 Jul 13 2006 README
23339 harry Feb 04 01:40 branches/
21282 sally Aug 27 09:41 developer-resources/
23198 harry Jan 23 17:17 tags/
23351 sally Feb 05 13:26 trunk/
svn proplist/propset/propget
可加-v显示详细信息
$ svn propget svn:mergeinfo .
/trunk:341-390
svn propedit svn:ignore <patter>
忽略某类文件, 比如
Svn propedit svn:ignore debug_log*
 
svn propedit svn:externals <url>
添加外链的第三方SVN库
$ svn propget svn:externals calc
http://svn.example.com/repos/sounds third-party/sounds
http://svn.example.com/skinproj@148 third-party/skins
http://svn.example.com/skin-maker@21 third-party/skins/toolkit
svn changelist <tag> <files>
svn diff –changelist <tag>
svn ci –changelist <tag>
添加标签, diff或者commit时可以只使用部分文件
Section 3.10
$ svn changelist math-fixes integer.c mathops.c
$ svn diff --changelist math-fixes
$ svn ci --changelist ui-fix
svn checkout –r {date}
接受{日期}来指定checkout的版本
Section 3.1.2
$ svn checkout -r {2006-02-17}
$ svn checkout -r {15:30}
svn merge --reintegrate
Merge分支修改回trunk
 
svn mkdir
建立标签所需目录
 
  3. 常用关键字
HEAD
版本库中最新的版本。
BASE
工作拷贝中一个条目的修订版本号,如果这个版本在本地修改了,则这里指的是这个条目在本地未修改的版本。
COMMITTED
项目最近修改的修订版本,与BASE相同或更早。
PREV
COMMITTED?1.
因为可以从描述中得到,关键字PREV,BASE和COMMITTED只在引用工作拷贝路径时使用,
而不能用于版本库URL,而关键字HEAD则可以用于两种路径类型。
$ svn log -r BASE:HEAD
# 显示当前本地版本和最新版本间所有commit log
$ svn diff –c COMMITTED foo.c
# 显示最后一次对foo.c的改动
$ svn diff -r BASE:HEAD foo.c
# 比较当前版本和最新版foo.c的改动
$ svn update -r PREV foo.c
# 撤销对foo.c的最后一次改动
 
4. Svn附带其他工具
a) svnadmin
b) svndumpfilter
c) svnlook
d) svnmucc
e) svnserve
f) svnsync  - 这个挺有用,可以同步整个svn repository进来,是不是像git clone?
 
Technorati 标签: SVN, Git, 版本管理