SVN 命令行应用小结

  • A+
所属分类:服务器

发送新项目到SVN网络服务器上
svn import project_dir(当地新项目全相对路径) http://192.168.1.242:8080/svn/IOS/Ben/remote_dir(svn新项目全相对路径) -m “必填, 不填此指令实行不容易取得成功.”
注: 网络服务器上remote_dir若找不到, 会全自动建立;
只大会上传project_dir目录下的文件到remote_dir的目录下
import以后, project_dir并沒有全自动转换为工作中目录, 必须再次checkout(后边会采用)
免费下载checkout svn新项目到当地
svn checkout http://192.168.1.242:8080/svn/IOS/remote_dir (svn新项目全相对路径)project_dir(当地目录全相对路径) –username 登录名 –password 登陆密码
svn checkout 缩写:svn co
加上新文件
svn add file(文件名)
svn add *.php(加上当今目录下全部的php文件)
提交到版本库
svn commit -m “LogMessage” [-N] [–no-unlock] PATH(假如挑选了维持锁,就应用–no-unlock电源开关)
svn commit -m “提交当今目录下的所有在版本操纵下的文件“ * ( *表达所有文件 )
比如:svn commit -m “add test file for my test” test.php
svn commit -m “提交我的检测用test.php“ -N –no-unlock test.php ( 维持锁就用–no-unlock电源开关 )
留意:务必随身携带-m主要参数,主要参数能够 为空(””)
svn commit 缩写:svn ci
升级文件
svn update
svn update -r 调整 版本 文件名
svn update 文件名
比如:
svn update (后边沒有目录,默认设置将当今目录及其子目录下的全部文件都升级到最新消息版本)
svn update -r 200 test.cpp ( 将版本库中的文件 test.cpp 复原到调整 版本(revision)200)
svn update test.php ( 升级与版本库同歩 )
提交的那时候提醒到期矛盾,必须先 update 修改文件,
随后消除svn resolved,最终再提交commit。
svn update 间写: svn up
查询文件或是目录情况
1)svn status path(目录下的文件和子目录的情况,一切正常情况无法显示)
【?:没有svn的操纵中;M:內容被修改;C:发生争执;A:预订添加到版本库;K:被锁住】
2)svn status -v path(显示信息文件和子目录情况)
第一列维持同样,第二列显示信息工作中版本号,第三和第四列显示信息最后一次修改的版本号和修改人。
注:svn status、svn diff、svn revert这三条指令在沒有互联网的状况下还可以实行的,缘故是svn在当地的.svn中保存了当地版本的初始复制。
svn status 缩写:svn st
删掉文件
svn delete path -m “delete test fle”
比如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”
强烈推荐应用:
svn delete test.php
svn ci -m ‘delete test file‘
svn delete 缩写:svn del/remove/rm
查询系统日志(显示信息文件的全部修改纪录,以及版本号的转变)
svn log path
svn log -l 3查询最新消息的三条纪录
比如:svn log test.php
查询文件详细资料
svn info path
比如:svn info test.php
较为差别
svn diff path(将修改的文件与基本版本较为)
比如:svn diff test.php
svn diff -r m:n path(对版本m和版本n较为差别)
比如:svn diff -r 200:201 test.php
svn diff 缩写:svn di
合拼文件(将2个版本中间的差别合拼到当今文件)
svn merge -r m:n path
比如:
svn merge -r 200:205 test.php(将版本200与205中间的差别合拼到当今文件,可是一般都是造成矛盾,必须解决一下)
SVN 协助
svn help 所有作用选择项
svn help ci 实际作用的表明
版本库下的文件和目录目录
svn list path
显示信息path目录下的全部归属于版本库的文件和目录
svn list 缩写:svn ls
建立列入版本操纵下的新目录
svn mkdir newdir
比如:
svn mkdir -m “Making a new dir.” svn://localhost/test/newdir
使用方法: 1、mkdir PATH…
2、mkdir URL…
建立版本操纵的目录。
1、每一个以工作中团本 PATH 特定的目录,都是建立在当地端,而且添加增加
生产调度,于己下一次的提交。
2、每一以URL特定的目录,都是穿透马上提交于库房中建立。
(在这里2个状况下,全部的正中间目录都务必事前存有)
注:加上完子目录后,一定要返回根目录升级svn update一下,要不然在该目录下提交文件会提醒“提交不成功”
注:假如手动式在checkout出去的目录里建立了一个新文件夹newsubdir,
再用svn mkdir newsubdir指令后,SVN会提醒:
svn: 试着用 “svn add”或 “svn add –non-recursive”替代?
svn: 没法建立目录“hello”: 文件早已存有
这时,用以下指令处理:
svn add –non-recursive newsubdir
在进到这一newsubdir文件夹,用ls -a查询它下边的所有目录与文件,会发觉多了:.svn目录
再用 svn mkdir -m “添hello程序模块文件” svn://localhost/test/newdir/newsubdir 指令,
SVN提醒:
svn: File already exists: filesystem ‘/data/svnroot/test/db’, transaction ‘4541-1’,
path ‘/newdir/newsubdir ‘
修复当地修改
svn revert: 修复初始未更改的工作中团本文件 (修复绝大部分的当地修改)。
使用方法: revert PATH…
留意: 本子h指令不容易存储互联网,而且会消除矛盾的情况。可是它不容易修复
被删掉的目录
svn revert foo.c <- 丢掉对一个文件的修改
svn revert –recursive . <-修复一全部目录的文件,

编码库URL变动
svn switch (sw): 升级工作中副本至不一样的URL。
使用方法: 1、switch URL [PATH]
2、switch –relocate FROM TO [PATH…]
1、升级你的工作中副本,投射到一个新的URL,其个人行为跟“svn update”很像,也会将
网络服务器上文件与当地文件合拼。它是将工作中副本相匹配到同一库房中某一支系或是标识的
方式 。
2、改变工作中副本的URL元数据,以体现单纯性的URL上的更改。当库房的根URL变化
(例如计划方案名或者服务器名字变化),可是工作中副本依然对映到同一库房的同一文件目录时应用
这一指令升级工作中副本与库房的相匹配关联。
svn switch 间写: svn sw
解决冲突
svn resolved: 清除工作中副本的文件目录或文件的“冲突”情况。
使用方法: resolved PATH…
留意: 本子h指令不容易依英语的语法来解决冲突或者清除冲突标识;
它仅仅清除冲突的有关文件,随后让 PATH 能够 再度提交。
輸出特定文件或URL的內容
svn cat 总体目标[@版本]…假如特定了版本,将从特定的版本开始查找。
svn cat -r PREV filename > filename (PREV 是上一版本,还可以写实际版本号,那样輸出結果是能够 提交的)
查询svn版本
svn —-version
在建支系branchs,在支系上再次开发设计
1、svn mkdir branches
2、svn copy svn://server/trunk svn://server/branches/ep -m “init ep”
该版本进行,打tag,公布版本
1、svn mkdir tags
2、svn copy svn://server/trunk svn://server/tags/release-1.0 -m “1.0 released”
应用产生的一些难题:
1、不正确:
svn: Could not use external editor to fetch log message; consider setting the $SVN_EDITOR environment variable or using the –message (-m) or –file (-F) options
svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR is set, and no ‘editor-cmd’ run-time configuration option was found
难题缘故是:
沒有设定svn在线编辑器的环境变量,关键是import、commit中填好comment得用
解决方式 :
1、在 终端设备中 sudo vim /etc/bashrc 开启文件
添加:export SVN_EDITOR=vim
2、编写完之后一般必须让配备文件马上起效,可运行命令:
source /etc/bashrc(还可以不开展这一步)
2、难题:
一不小心提交了一些动态性更改本质不用的文件到svn网络服务器上
解决:
svn resolved filename 舍弃对文件的改动,
svn ci -m “update” 提交全部文件
svn rm test.log 删掉掉这一文件。
svn ci -m “update” 再度提交
3、产生冲突:
两个人另外改动同一文件同一部分,依次提交,出現冲突
svn ci -m “update”
svn: Commit failed (details follow):
svn: Aborting commit: ‘test.log’ remains in conflict
解决:
A、舍弃自身的升级,应用svn revert(回退),随后提交。在这类方法下不用应用svn resolved(解决)
B、舍弃自身的升级,应用他人的升级。应用最新消息获得的版本遮盖总体目标文件,实行resolved filename并提交(挑选文件—鼠标右键—解决)。
C、手动式解决:冲突产生时,根据和普通用户沟通交流以后,手动式升级总体目标文件。随后实行resolved filename来消除冲突,最终提交。
坚持不懈应用自身的升级,寻找.mine的文件名,修复为原文件名,随后实行:
svn resolved file_name

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: