SVN命令行使用方法
文章目录
前言
SVN作为一款经典的版本管理工具,仍有不少公司在使用。在国产化的浪潮下,有些公司会选用ubuntu作为开发系统,本文主要讲述在命令行下svn的一些基本操作方法。
一、常见的操作及对应的指令
下文中会使用“<>”来表示一定要键入的参数。
1、显示当前目录下的版本信息
svn info
2、显示当前目录下的文件状态
svn st
? 代表未受到版本控制的文件
M 代表本地有修改但没有提交的文件
C 代表有冲突的文件
A 新增的文件
D 删除的文件
3、检出代码
svn co <URL>
如果在当前位置检出
svn co <URL> ./
4、代码加入版本控制
svn add <file 或者 dir>
如果加入单个文件,例如文件名字是 note.txt
svn add note.txt
如果加入一个目录以及目录下所有文件
svn add new notes/
如果误添加目录或者文件想要去除
svn revert <file 或者 dir>
如果递归该目录可以加上 --recursive
注意:加入版本库只是在本地操作,需要提交后才可以传到服务器
5、代码提交
svn ci -m “<提交说明>“ <文件或目录>
新增了文件,在提交时也要在文件或者目录中提及
6、从版本库中删除文件
svn delete <file 或者 dir>
注意:将文件剔除版本库只是在本地操作,需要提交后才可以传到服务器
7、冲突解决
svn resolve --accept <参数> <file 或者 dir>
参数可以是 'base', 'working', 'mine-conflict','theirs-conflict', 'mine-full', 'theirs-full'
如果要合并代码,首先使用 working 参数解决冲突状态,
然后对文件进行修改,提交代码
8、动态库无法上传的问题
修改 /home/<用户名>/.subversion/config 文件将global-ignores键值设置放开,使之等于空
global-ignores =
用户名为本机用户名
操作之后可以使用 svn add 、svn ci指令完成动态库的上传
二、高级操作
1、比对同一路径下 不同版本之间的差异
将URL的REV版本变动保存到note.txt中
svn diff -c <REV> <URL> >>note.txt
-c 后面可跟多个版本<r1,r2,r3...>的修改
将差异打patch到另外一个分支
patch -p0 < <patchfile>
2、生成一个分支
copy SRC[@REV]... DST
同一个svn服务器 目标目录的倒数第二级需要在服务器上存在 否则会创建失败 ,可以使用 -r 指定版本
svn copy <URL> -r 10 <DST_URL>
不同svn服务器并不能copy
会提示svn: E200007: 来源与目标 URL 似乎不在同一版本库。
不同的服务器手动检出代码,然后上传。
3、从一个分支向主干合并
merge: Merge changes into a working copy.
merge [-c M[,N...] | -r N:M ...] SOURCE[@REV] [TARGET_WCPATH] (the 'cherry-pick' merge)
进入到要合并的源分支目录进行操作
svn merge -c <r1> SOURCE[@REV] [TARGET_WCPATH]
合并的流程:
trunk: --------REV1→----REV4→---------- REV6→------------------------REV10→-------
| \ /(merge from branch1)
| \ /
|(copy) \(merge from trunk ) /
branch1: REV2→----REV3→------REV5→------------------------REV7→
名词解释:
trunk:干线 主干。branch1:branch分支,分支1
REV:版本。
4、查看某个目录的合并信息
svn proplist <dir>
svn propget svn:mergeinfo <dir>
5、外链操作
外链是指定一个受版本控制的目录的某些目录从外部拉取代码,在维护工程时,外链目录要选择合适版本。
进入到某个目录下
svn propset svn:externals "outlink <URL>" ./
总结
本文简单介绍了SVN命令行的使用方法。