1.创建存储库
假设d:/dev/svnrepo为存放svn存储库的目录
svnadmin create d:/dev/svnrepo/test 创建一名为test的存储库
2.导入项目
svn import [Local PATH] [SVN PATH] -m "Initial Import"
参数:-m 为日志
3.导出项目
svn export
svn export -r
-------------------------
4.取出
svn co(checkout) http://localhost/svn/test/OnlyTest --- 将OnlyTest文件夹其下的文件取出来并建立默认文件夹OnlyTest
svn co -r [版本号] --取出特定版本
svn co http://localhost/svn/test/OnlyTest MyTest --将OnlyTest文件夹下的文件取出,放入新建立的文件夹MyTest中
5.添加
svn add * -- svn会将未纳入版本控制的文件加入版本控制中(必须svn commit)
svn add --non-recursive * 非递归添加
6.删除
svn delete(rm,remove,del) --删除文件和目录(必须svn commit)
7.提交
svn commit -m "you log" --提交
svn commit --changelist --提交指定的changelist
8.创建目录
svn mkdir
svn mkdir
9.移动文件或目录
svn move
svn move
10.输出特定文件或URL的内容
svn cat -- 输出特定文件或URL的内容
svn cat -r
------------------------------
11.显示本地或远程某一文件或目录的详细信息
svn info
svn info -r
12.列表
svn list(ls)
svn list -r
13.当前目录或文件的状态
svn status
svn status --show-updates(或-u) 从项目存储库中找出哪些文件有更新
状态:
第一列:指出条目的状态
空 无改动
A 添加
C 冲突
D 删除
G 合并
M 修改
X 无版本记录,被svn:externals使用
? 未用版本控制管理
第二列:属性状态
空 无改动
C 冲突
M 修改
第三列:工作拷贝是否被锁定
空 未锁
L 锁了
14.清理
svn cleanup -- 递归清理工作拷贝
15.帮助
svn help
svn help --显示子命令的帮助,如:svn help add
-----------------------
18.锁定某一目录或文件
svn propset svn:needs-lock true --设定需要锁[svn会将其设置为只读,提示用户编辑这个文件前先加锁]
svn lock
svn lock --force --强制对文件加锁,即使此文件已被别人加锁
19.解锁
svn unlock
svn unlock --force --可以解锁其他用户锁定的文件
20.显示特定文件和URL每一行的作者和修订版本信息
svn blame -- 每一行文本在开头都放了最后修改的作者(用户名)和修订版本号。
svn blame -r
21.更新
svn update ----把版本库的修改带到工作拷贝
svn update -r -- 改变到某一个版本
状态:
A 添加 add
D 删除 delete
U 更新 update
C 冲突 conflict
M 合并 merge
22.找不同
svn diff --找出工作版本和最后更新的版本中的不同
svn diff -c 查看文件在修订版本修改的内容,是version和version-1比较
svn diff -r 察看你的工作拷贝对旧的修订版本的修改
svn diff -r : 使用范围符号来比较修订版本和
svn diff -r :
svn diff --changelist
23.拷贝
svn copy -- 其中source和dist既可以是工作目录文件也可以是url
如:svn copy foo.txt bar.txt
svn copy near.txt file:///tmp/repos/test/far-away.txt -m "Remote copy."
svn copy file:///tmp/repos/test/far-away near-here
svn copy file:///tmp/repos/test/far-away file:///tmp/repos/test/over-there -m "remote copy."
24. 显示提交日志信息
svn log -r
svn log -r :
svn log
svn log -r {iso8601日期}
svn log -r {iso8601日期}:{iso8601日期}
svn log -v 显示详细的信息(包括每个版本有哪些文件有变动)
svn log --stop-on-copy 得出分支是什么时候创建的
25.删除工作拷贝文件或目录的“冲突 ”状态(相关的冲突文件文件)
svn resolved
26.取消所有的本地编辑
svn revert
svn revert --recursive 递归
27.解决冲突
svn resolve --accept
status:
base:选择你更新你的工作拷贝前的你checkout出的未经修改的版本
working:手工处理后,选择当前你工作拷贝中的版本
mine-full:选择在你svn update前的工作拷贝
theirs-full:选择svn update取出的文件拷贝
28.将文件放入到一个改变列表中
svn changelist(cl)
svn commit --changelist --只提交此change list的文件
29.版本号标识
(1)号 87
(2){日期} {2009-09-09}
(3)HEAD 存储库中最新版本
(4)BASE 工作拷贝中你最后签出的版本
(5)COMMITED 最后改动版本,等于或早于BASE
(6)PREV COMMITED之前的一个版本
30.产生和应用补丁
svn diff > file.patch
patch file.patch
31.svn项目组织
project/
trunk/ --主干
branches/ --分支
tags/ --标签
32.常用示例
(1)提交改动
svn update --更新到项目的当前状态
# resolve conflicts 解决冲突
编辑文件
svn resolved
# run tests 运行测试
svn commit -m "your logs" --提交
(2)简单bug修正
a.在一个分支中修正bug并提交
b.将其合并到存在此bug的其他分支中(svn merge -r:)
(3)复杂bug修正
a.创建一个bug修正分支(svn copy) name=bug-trackid
b.为这个修正分支在修正前打标签(svn copy) name=bugpre-trackid
c.修正bug
d.为这个修正在修正后打标签(svn copy) name=bugpost-trackid
e.合并此bug修正到其他分支(svn merge -r bugpre-trackid:bugpost-trackid)