SVN 简单使用方法

SVN 简单使用方法

1. SVN 数据流svn 数据流

2. SVN 命令

2.1 基本命令

co [checkout] 远程仓库checkout到本地
up [update]  远程仓库中版本变化更新到本地
ci [commit]  工作目录中文件变化提交到远程仓库
st [status]    工作目录中文件状态
add       将文件纳入版本管理

Note:status 状态
A Added in your working copy
C Conflicted, because of an update or merge
D Deleted in your working copy
G Merged with changes from the repository
I   Ignored in your working copy
M Modified in your working copy
R  Replaced in your working copy
?  Not under version control
!   Missing from your

2.2 中级命令

2.2.1 resolve 冲突处理
svn resolve --accept file
  • resolve 通知svn解决冲突
  • accept 指定解决冲突后的文件
  • file 冲突处理后的文件
2.2.2 diff 文件比较
svn diff main.con
Index: main.conf
===================================================================
--- main.conf   (revision 2445)
+++ main.conf   (working copy)
@@ -1,4 +1,3 @@
 mapid_path=mapid_db
-admin_path=citylist_db
 extend_mapid=true
-thread_num=1
+thread_num=3

- index 中版本, + 工作目录中版本。

2.2.3 revert 恢复工作目录
# 恢复单个文件
svn revert main.conf
Reverted 'main.conf'

# 递归恢复整个目录
svn revert . -R
Reverted 'table_reader.cpp'
Reverted 'table.conf'
2.2.4 propedit 属性编辑

ignore 属性用于忽略当前目录中的某些文件,不纳入版本管理。

svn propedit svn:ignore .

*.sh
main

svn ci -m "ADD: filter shell and bin"
2.2.5 log 日志
  • 查看文件

    svn log main.conf
    ------------------------------------------------------------------------
    r2425 | chengsun | 2016-01-07 18:08:38 +0800 (Thu, 07 Jan 2016) | 1 line
    
    EDIT: all code done.
    ------------------------------------------------------------------------
    r2415 | chengsun | 2016-01-07 16:16:01 +0800 (Thu, 07 Jan 2016) | 1 line
    
    ADD: add prog conf
    ------------------------------------------------------------------------
    
  • 查看目录

    svn log
    
2.2.6 update vs revert
  • update 从remote repository 返回数据。
  • revert 从 index 中返回数据。

2.3 高级命令

blame 查看代码负责人
merge 分支合并、版本回退

svn blame mapid.cpp

版本   修改人   代码
-------------
2201  Tom       ……
800   Mike      ……
802   Mike      ……
802   Mike      ……

2.4 文件操作

cy [copy]  拷贝文件、创建分支、创建tag
del [delete]  删除、删除分支、删除tag
mv [move]   移动
ls [list]    查看文件
mkdir     创建文件夹

svn list svn list http://bj-scm.tencent.com/hummingbird/kepler_proj/tags
1.0
1.1

list 可以不用 checkout,查看远程仓库文件

2.5 其它命令

2.5.1 changelist 本地文件分组
svn st
A       file_info.h
A       file_manager.cpp
A       file_manager.h
A       file_info.cpp

changelist 可以将文件进行本地分组。比如上述四个文件,并不想一起提交,而是希望file_info 与 file_manager 分开。

svn changelist file_manager file_manager.*
svn cahngelist file_manager file_info.*
svn st
--- Changelist 'file_manager':
A       file_manager.cpp
A       file_manager.h

--- Changelist 'file_info':
A       file_info.h
A       file_info.cpp

svn ci -m "ADD: add file manager" --cl file_manager

Note: 分组只有本地可见,如果想删除分支,则:
svn changelist –remove –recursive –cl file_info .

2.5.2 export 导出仓库

不同于checkout的是,导出到本地的文件不被svn管理。

svn export http://bj-scm.tencent.com/hummingbird/kepler_proj/trunk map
2.5.3 import 导入仓库

外部导入文件,纳入svn管理。通常用于导入第三方库。

svn import -m "ADD: init import" . \
http://bj-scm.tencent.com/hummingbird/kepler_proj/trunk/third
2.5.4 info 查看svn信息
Path: .
URL: http://bj-scm.tencent.com/hummingbird/kepler_proj/branches
Repository Root: http://bj-scm.tencent.com/hummingbird/kepler_proj
Repository UUID: d0d4e180-543f-11e5-8ec9-a1898dccf2d9
Revision: 2427
Node Kind: directory
Schedule: normal
Last Changed Author: Tom
Last Changed Rev: 2143
Last Changed Date: 2015-12-09 19:56:09 +0800 (Wed, 09 Dec 2015)

3. 分支与合并

3.1 Tag

代码上线,表明有一个稳定的版本,这是需要打tag进行代码存档。

svn up
svn copy . http://bj-scm.tencent.com/hummingbird/kepler_proj/tags/1.0 -m "Create Tag 1.0"

可以通过svn info 查看仓库url地址。

3.2 分支

3.2.1 创建分支

方法一:

cd trunk
svn up
svn copy . http://bj-scm.tencent.com/hummingbird/kepler_proj/branches/fix_bug -m "create br"
cd ../branch
svn up

方法二:

svn copy -m "create br" \
    http://bj-scm.tencent.com/hummingbird/kepler_proj/trunk \
    http://bj-scm.tencent.com/hummingbird/kepler_proj/branch/fix_bug    
svn co http://bj-scm.tencent.com/hummingbird/kepler_proj/
3.2.2 主干合并到分支
cd branch/fix_bug
svn update
svn merge http://bj-scm.tencent.com/hummingbird/kepler_proj/trunk
svn ci -m "merge trunk to branch"
3.2.3 分支合并到主干
cd trunk
svn update
svn merge --reintegrate http://bj-scm.tencent.com/hummingbird/kepler_proj/branch/fix_bug
svn ci -m "Merge branch fix_bug to trunk"

–reintegrate 开发过程中,分支会不停的与主干进行同步(主干到分支),分支上既有独有的修改,也有主干的修改。
在分支到主干的合并过程中,通过指定参数 reintegrate 让svn仅同步分支独有的修改。

3.2.4 总结

分支合并语法: svn merge URL [URL:Merge URL指向路径到当前目录]

3.3 冲突处理

3.4 回退

3.4.1 回退目录
svn update
svn merge -r 500:495 .
svn commit -m "Roll Back From 500 To R495"

svn update 查看当前版本号

3.4.2 回退文件
svn merge -r 1000:300 lock.cpp
svn ci -m "Roll Back"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值