subversion(SVN)常规使用
语法: svn <subcommand> [options] [args]
使用“svn help <subcommand>” 显示子命令的帮助信息。
使用“svn --version”查看程序的版本号和版本库访问模块,或者
使用“svn --version --quiet”只查看程序的版本号。
1.【检出】将文件checkout到本地目录
将“项目版本库”检出到/wwwroot目录(不存在就创建)
# svn checkout svn://192.168.1.xx:3690/martinZFsvn/wwwroot
简写:svn co
注:第一次登陆svn服务器会将密码信息存放在用户路径下的.subversion文件夹下,路径为/root/.subversion/
2.【添加】向版本库添加新文件
# echo 'myaddfile.....' > svnaddfile.txt 新创建了一个文件
# svn add svnaddfile.txt 将新文件svnaddfile.txt添加到版本库
# svn add *.php 将当前目录的所有php文件添加到版本库
3.【提交】将改动的文件提交到版本库
svn commit -m "LogMessage" [-N] [--no-unlock] PATH(如果选择了保持锁,就使用--no-unlock开关)
-m 参数表示“最近信息”内容,相当于是每次提交新版本的备注信息
# svn commit -m 'add test file for my test' svnaddfile.txt 将svnaddfile.txt文件提交到版本库
简写:svn ci
4.【更新】将本地文件更新到某个版本
svn update -r m path
例如:
svn update 如果后面没有目录,默认将当前目录及子目录下的所有文件都更新到最新版本
# svn update 更新整个目录
# svn update newdir 更新newdir目录(这个目录可以是已经存在的,也可是新添加的)
# svn update ./svnaddfile.txt 更新当前目录的svnaddfile.txt,如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit。
# svn update -r 8 ./svnaddfile.txt 更新svnaddfile.txt还原到版本8
简写:up
5.【删除文件】
svn delete PATH -m 'delete test file,'
# svn delete ./grptest11/test111.txt
或者直接 # svn delete ./grptest11/test111.txt 然后再 # svn ci -m 'delete test file' 推荐使用这种
简写:svn (del, remove, rm)
6.【加锁/解锁】
svn lock -m 'LockMessage' [--force] PATH
# svn lock -m '我现在修改这个文件,其他人先别改哦' svnaddfile.txt //对svnaddfile.txt加锁
svn unlock PATH 解锁
7.查看文件或目录状态
svn status PATH (检查PATH目录下的文件和子目录的状态,正常状态不显示)
注:?:表示不在svn的控制中; M:表示内容被修改; C:表示发生冲突; A:表示预定加入到版本库; K:表示被锁定
svn status -v PATH (显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st
8.查看日志
svn log PATH
例如:# svn log test.php 显示这个文件的所有修改记录,及其版本号的变化
9.查看文件详细信息
svn info PATH
例如:# svn info svnaddfile.txt
10.比较差异
svn diff PATH (将被修改的文件与基础版比较)
例如:# svn diff svnaddfile.txt
svn diff -r m:n path(对版本m和版本n比较差异)
例如:# svn diff -r 8:12 svnaddfile.txt
简写:svn di
11.将两个版本之间的差异合并到当前文件
svn merge -r m:n PATH
例如:# svn merge -r 8:12 svnaddfile.txt (将版本8与12之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)
12.【帮助】
# svn help
# svn help ci
# svn help up
------------------------------------------------------------------------------------------------------
13.版本库下的文件和目录列表
例如:svn list path
简写:svn ls
14.创建纳入版本控制下的新目录
用法:1.# mkdir PATH
2.# mkdir URL
创建版本控制的目录。
1.每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增调度,以待下一次的提交。
2.每个以URL指定的目录,都会透过立即提交于仓库中创建。在这两个情况下,所有的中间目录都必须事先存在。
15.恢复本地修改
svn revert 恢复原始未改变的工作副本文件(恢复大部分的本地个性) revert
用法:# svn revert PATH
注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录
16.代码库URL变更
svn switch (sw): 更新工作副本至不同的URL。
用法: 1、switch URL [PATH]
2、switch --relocate FROM TO [PATH...]
1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的方法。
2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用这个命令更新工作副本与仓库的对应关系。
17.解决冲突
svn resolved: 移除工作副本的目录或文件的“冲突”状态。
用法: resolved PATH...
注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的相关文件,然后让 PATH 可以再次提交。
18.输出指定文件或URL的内容
svn cat 目标[@版本]...如果指定了版本,将从指定的版本开始查找。
svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)
注:大多数的子命令可接受文件或目录参数,对目录进行递归处理。如果没有指定参数,默认对当前目录(包含当前目录)递归处理。
可用子命令:
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)
patch
propdel (pdel, pd)
propedit (pedit, pe)
propget (pget, pg)
proplist (plist, pl)
propset (pset, ps)
relocate
resolve
resolved
revert
status (stat, st)
switch (sw)
unlock
update (up)
upgrade
参考文档
http://blog.chinaunix.net/uid-22150747-id-189264.html
http://blog.163.com/kingna_jin/blog/static/32488347200868858899/
http://www.cnblogs.com/wanqieddy/archive/2011/06/09/2076783.html