检出
svn checkout svn://svnserver.com
svn co svn://svnserver.com
更新
#更新到最新版本
svn update
svn up
#更新到某一版本 但要注意这并不会重新生成新的版本库 即 r20 更新到 r10 你 commit 后不会生成 r21
svn update -r reversion
svn up -r reversion
添加\删除\未提交恢复
#将文件加入版本控制
svn add filename/dirpath
svn delete filename/dirpath
#未提交 可恢复
svn revert filename/dirpath
查看文件状态
svn status
svn st
A 新增 C 冲突 D 删除 G 合并 U 更新 E 存在 R 替换
查看版本日志
svn log
#这里的99 88 为版本号 注意使用时不带r
r99-------------
r88-------------
#查看指定文件的日志
svn log filename
查看版本信息
#查看本项目的信息
svn info
#查看指定文件的信息
svn info filename
提交
svn commit -m "your tip message"
svn ci -m "your tip message"
查看文件不同版本差别
svn diff -r 10:20 // 10 和 20 的
svn diff -r 10 current_version.sh // 10 和当前文件的
冲突解决
当我 与 A 同时修改了 same_time.txt 文件,并且 A 早于我提交,当我提交时就会提示冲突发生,会提示你要先进行更新(当然 svn 客户端会智能的检测看是否能进行merge合并),若无法合并则会让你手动解决,同时更新会让你选择
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options:
一般我选择 p ,将冲突更新到本地,与 A 协同一起解决冲突
vi same_time.txt //引入冲突的
<<<<<<<
mine content
============
A content
>>>>>>> .r11
#我的
same_time.txt.mine
#冲突前的
same_time.txt.r10
#冲突的
same_time.txt.r11
#当你与 A 协同好后,执行下面的命令即可通知服务器冲突已解决 它会把 mine r10 r11自动删除
svn resolve --accept working same_time.txt
svn ci -m "resolve the conflict A and me"
即可解决冲突,其实比较蛋疼的是你手动把 mine r10 r11那三个文件删了 svn 服务器也会认为你解决的冲突,团队协作开发中应分工明确,尽量不要两人同时工作于同一文件,发生冲突要协作解决
回滚到某一版本 merge -r v_2:v_1 filename (to v_2 from v_1)
#首先更新到最新版本 获取当前版本的版本号
svn up
#获取最新的版本号
Updated to revision 12
#如果我想恢复到11版本则先看下两者的差别
svn diff -r 12:11 same_time.txt
#-r version_1:version_2 是说 to version_1 from version_2
svn merge -r 12:11 same_time.txt
#有冲突解决冲突 没冲突提交
#提交生成新的版本库
svn ci -m 'revision 13 revert same_time.txt from 11'
分支Branch
#创建分支 创建后可根据路径检出
svn cp/copy svn://127.0.0.1/project_1/trunk svn://127.0.0.1/project_1/branch/project_1_sub -m "create branch"
#删除分支
svn delete/rm/remove svn://127.0.0.1/project_1/branch/project_1_sub -m "delete project_1_sub"
合并分支
#查找分支被创建是的版本号
cd /var/www/project_1/branch/project_1_sub
#最后一个就是 比如为 r11
svn log | tail
#进入主干目录
cd /var/www/project_1/trunk
#将分支版本合并到主干,范围为 r11到当前 HEAD 版本
svn merge -r 11:HEAD svn://127.0.0.1/project_1/branch/project_1_sub -m "merge branch"
#没有冲突提交即可