首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > CVS SVN >

SVN 根本命令

2012-08-17 
SVN 基本命令先来看 SVN Trunk/Tags/Branches 目录 的 架构 和 用途:(英文说明转载自 SubTrain PPT) ? ? t

SVN 基本命令

先来看 SVN Trunk/Tags/Branches 目录 的 架构 和 用途:(英文说明转载自 SubTrain PPT)
? ? trunk: Main line of development(主干, 主要开发都由在 trunk)
? ??tags: Releases (想要 Release 的时后, 就标个 Tag, 以后可以依 Tag 来找回之前版本的数据)
? ? branches: Preparation of release, bug fixing(分支, 可以将某些功能切出来, 或者 bug fix 等切成分支, 等做完后再用 Merge 合并回来)


SVN 基本功能:
Import: 将整个 project_directory 的数据 import 进 svn 里面
??? ? svn import project_directory http://DOMAIN/svn_project
??? ? svn import project_directory file:///SVN_PATH/svn_project


Checkout: (checkout 可简写成 co), 将资料 checkout 回来
??? ? svn co http://SVN_PATH/svn_project?
??? ? svn co file:///SVN_PATH/svn_project?
??? ? svn co -r 12 file:///var/lib/svn/dev/projects # 出第12版的 projcets code


List: (list 可简写成 ls), 看上面有哪些档案/数据?
??? ? svn ls http://SVN_PATH/svn_project?
??? ? svn ls file:///SVN_PATH/svn_project


Update: (update 可简写成 up), 将目前信息更新成 SVN 在线最新版本.?
??? ? SVN_CHECKOUT_DIR$ svn up

?

Commit: (commit 可简写成 ci), 将目前所做的修改 commit 回 svn?
??? ? SVN_CHECKOUT_DIR$ svn ci

?

Status: (status 可简写成 st), 看目前档案/结构 跟 SVN 在线的版本有哪些不同?
??? ? SVN_CHECKOUT_DIR$ svn st

?

Add: 将此 档案/目录 新增进 svn?
??? ? SVN_CHECKOUT_DIR$ svn add filename 或 svn add directory

?

MV: 改文件名, 并且此档案之前纪录还要继续留下?
??? ? SVN_CHECKOUT_DIR$ svn mv filename new_filename

Revert: 还原这次的修改, 回到前一版的档案状态(未 commit 前可用)?
??? ? SVN_CHECKOUT_DIR$? svn revert [file | directory]

?

SVN 档案状态信息:?
??? ? ?: 此档案不存在 SVN 里面?
??? ? A: 此次新增的档案?
??? ? C: 此档案已经有人改过, 合并不成功, 需要人工介入?
??? ? D: 此次移除的档案?
??? ? M: 此档案有修改过?
??? ? U: 此档案有被更新过

再来是比较进阶一点点, 下述范例转载自 SubTrain 的教学 PPT:

?

建立一个 branch?
??? ? svn copy http://svnserver/calc/trunk http://svnserver/calc/branches/my-calc-branch -m 'create a branch'?

建立 Release Tags:?
??? ? svn copy http://svnserver/calc/trunk http://svnserver/calc/tags/Release-1.0.0 -m 'create Release tags for Release 1.0.0'

?

合并两个版本的档案 # 参考自: 用 Subversion 的 Merge 来 Undo?
??? ? svn merge -r REV1:REV2 {path/to/workingcopy}?
??? ? (UNDO) svn merge -r 1234:1233 ...?
??? ? (MERGE)svn merge -r 1233:1234 ...?
??? ? svn merge --dry-run -r 343:344 http://svn.example.com/repos/calc/trunk

?

有 "C" 状态处理完后, 用 resolved? 将自动产生的档案删除, 才能正常 commit:?
??? ? svn resolved filename # 这样子下就会把自动产生 diff 等的档案删除

找版本间有什么不同 diff:?
??? ? svn diff # 自动以现在档案跟 SVN 内最新版做 diff?
??? ? svn diff -r9237:9238

Info: 列出现在路径, 版本编号, 最后一次修改日期 ... 等信息?
??? ? svn info

Log: 如果没输入参数, 预设会把所有 commit log 都列出来?
??? ? svn log?
??? ? svn log -l 10 # 显示 10 笔(最新 10笔 Log)?
??? ? svn log -c 100 # 显示 revision 100 的 Log?
??? ? svn log -v -c 100 # 显示? revision 100 的详细 Log


?

Propset (propset, pset, ps): 版本控制都有些特殊 Keyword 设定, 如 Id 就是最常用的, 设定方法如下:?
??? 1. 在档案内找地方加入 $Id$?
??? 2. 设定此档案要能吃 Id 的 Keyword: svn ps svn:keywords 'Id' filename (只需设一次即可, 之后就不用再设)?
??? 3. svn ci 后, $Id$ 会自动代换成 $Id:filename 编号 年月日时分秒 username $ 的信息?
??? 4. svn help ps 可以看到有哪些 Keyword 可以用, 即 Keyword 的说明.(ex: URL, Author, Date, Rev, Id 等.)

热点排行