SVN是一个开源的版本控制系统,它是一种集中式的版本控制系统,工作时需要联网;而现在比较流行的Git是一种分布式的版本控制系统,关于两者的比较可以参考SVN和Git的比较
下面只是来介绍下SVN中常用的命令,我安装的版本是Ubuntu 12.04 SVN 1.7
一、如果不清楚SVN可以使用哪些命令,只要help就会列出所有的命令,但常用的命令只有几个而已
svn help — Help!
别名:?,h
描述:显示帮助信息
访问库:否。
eg:
[email protected]:~/D/dzt/workarea/7301_mp/android_mtk_mp$ svn help
用法: svn <subcommand> [options] [args]
Subversion 命令行客户端,版本 1.7.18。
使用“svn help <subcommand>” 显示子命令的帮助信息。
使用“svn --version”查看程序的版本号和版本库访问模块,或者
使用“svn --version --quiet”只查看程序的版本号。
大多数的子命令可接受文件或目录参数,对目录进行递归处理。
如果没有指定参数,默认对当前目录(包含当前目录)递归处理。
可用的子命令: (下面括号中就是命令的别名、简写)
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
Subversion 是版本控制工具。
欲取得详细资料,请参阅 http://subversion.apache.org/
二、
svn info [TARGET[@REV]...]
别名:无
描述:显示指定WC和URL信息。
访问库:仅当访问的是库路径时。
eg:
[email protected]:~/D/dzt/workarea/7301_mp/android_mtk_mp$ svn info
路径: .
工作副本根目录: /home/dzt/D/dzt/workarea/7301_mp/android_mtk_6752_mp
URL: http://192.168.110.97/svn/android_mtk_6752_mp/trunk
版本库根: http://192.168.110.97/svn/android_mtk_6752_mp
版本库 UUID: 70e49d97-b16d-481c-ab8a-a723f641743d
版本: 2146
节点种类: 目录
调度: 正常
最后修改的作者: admin
最后修改的版本: 2010
最后修改的时间: 2014-11-18 12:09:20 +0800 (二, 2014-11-18)
三、
svn status [PATH...]
别名:stat, st
描述:输出WC中文件和目录的状态。如果WC提交,这些状态就会同步到库里。
一般状态有 ‘ ‘ 没有修改
‘A‘ 新增
‘D‘ 删除
‘M‘ 修改
‘R‘ 替代
‘C‘ 冲突
‘I‘ 忽略
‘?‘ 未受控
‘!‘ 丢失,一般是将受控文件直接删除导致
访问库:加上--show-updates参数时会
eg:
[email protected]:~/D/dzt/workarea/7301_mp/android_mtk_mp$ svn status
! .
M auto_sync_android.log
M bionic/libc/kernel/common/linux/hwmsensor.h
M bionic/libc/kernel/common/linux/sensors_io.h
? bionic/libc/kernel/common/linux/spi/spidev.h
? bionic/libgn_prt
? bionic/librsa_decrypt
? bootable/bootloader/lk/dev/logo/fhd/fhd_amigo_charger_ov.bmp
? bootable/bootloader/lk/dev/logo/fhd/fhd_amigo_kpoc_charge.bmp
? bootable/bootloader/lk/dev/logo/fhd/fhd_amigo_low_battery.bmp
? bootable/bootloader/lk/dev/logo/fhd/fhd_bat_empty_01.bmp
? bootable/bootloader/lk/dev/logo/fhd/fhd_bat_empty_02.bmp
? bootable/bootloader/lk/dev/logo/fhd/fhd_bat_empty_03.bmp
四、
svn update [PATH...]
别名:up
描述:更新WC,更新反馈有如下几种分类。
A 新增
B 锁破坏
D 删除
U 更新
C 冲突
G 合并
E 存在的
访问库:是
eg:
[email protected]:~/D/dzt/workarea/7301_mp/android_mtk_mp/frameworks/base/core/java/android/app$ svn up
正在升级 ‘.‘:
已还原“AlarmManager.java”
版本 2271
五、
svn checkout URL[@REV]... [PATH]
别名:co
描述:检出(下载)
访问库:否
eg:
[email protected]:~/D/dzt/workarea/7301_mp$ svn co http://192.168.110.110/svn/android_mtk_mp/trunk/frameworks/base/core/java/android/app app
A app/SearchManager.java
A app/IActivityPendingResult.aidl
A app/IActivityController.aidl
A app/DownloadManager.java
A app/ApplicationThreadNative.java
A app/LocalActivityManager.java
A app/WallpaperInfo.java
A app/Application.java
A app/Instrumentation.java
A app/SearchableInfo.java
A app/ResourcesManager.java
A app/ActivityOptions.java
A app/IUserSwitchObserver.aidl
A app/ApplicationPackageManager.java
A app/Presentation.java
A app/IThumbnailRetriever.aidl
A app/ApplicationLoaders.java
A app/UiModeManager.java
A app/Notification.aidl
A app/LauncherActivity.java
A app/IntentService.java
A app/AppGlobals.java
A app/IBackupAgent.aidl
A app/AppOpsManager.aidl
A app/AlertDialog.java
A app/AlarmManager.java
A app/DatePickerDialog.java
A app/ListFragment.java
A app/IStopUserCallback.aidl
A app/IApplicationThread.java
A app/ISearchManagerCallback.aidl
A app/package.html
A app/ITransientNotification.aidl
六、
svn commit [PATH...]
别名:ci
描述:把你WC的更改提交到仓库(上传)
访问库:是
eg:
svn commit -m "added howto section." ##默认情况下提交必须提供log message
eg:
[email protected]:~/D/dzt/workarea/7301_mp/widget/widget$ svn ci AbsListView.java
正在发送 AbsListView.java
传输文件数据.
提交后的版本为 2081。
七、
svn cleanup [PATH...]
别名:无
描述:递归的清理WC中过期的锁和未完成的操作。有提交失败的情况也可以命令这个命令清除锁
访问库:否
eg:svn cleanup
八、
svn diff
别名:di
描述:用来比较并显示修改点。
访问库:
eg:svn diff ##最常用的方式,用来显示WC基于最近一次更新以后的所有的本地修改点。
eg:svn diff -r 301 bin ## 比较WC和版本301中的bin目录的修改点
eg:svn diff -r 3000:3500 file:///var/svn/repos/myProject/trunk ##比较库里主干3000版和3500版的差异。
eg:svn diff --summarize --xml http://svn.red-bean.com/repos/[email protected] http://svn.red-bean.com/repos/test ##--summarize --xml 参数将差异情况以xml文档的方式显示出来
eg:
[email protected]:~/D/dzt/workarea/7301_mp/app$ svn diff AlarmManager.java
Index: AlarmManager.java
===================================================================
使用SVN管理代码时,在提交命令前这个命令是很有必要的,确保我在更新代码时不会把别人的覆盖掉