文档详情

SVN.ppt

发布:2017-02-16约8.39千字共63页下载文档
文本预览下载声明
Features – Web Access View From Web Browser CheckOut操作(续) 指明Checkout的版本号 默认CheckOut操作是针对HEAD版本进行的,大多数情况下我们需要HEAD版本,但如果需要历史版本,可以用-r(--revision)参数或者是用“@版本号”的形式 例:… -r 1452 会检出1452版,如果存在的话 … -r {“2007-05-05”} 会检出最接近这个日期的 版本 …/trunk@1452 效果同第1个例子 递归与不递归 -N:不递归(仅针对顶层目录),否则目录递归(默认,常用) 注:上面两个参数-r –N在很多命令里面都用到 Update操作 把版本库的修改同步到本地的过程是Update 语法: update(up) [PATH...] 例1:up 直接把工作拷贝更新到最新版(HEAD版) 例2:up -r 2007 更新到2007版 例3:up doc/design 只更新doc/design下的文件 -r和-N参数仍然有用 Update会修改被更新目录的BASE版本号 文件状态 BASE版:某个文件的BASE版本是指存放在管理目录.svn中的该文件拷贝的版本,Revert会使该文件回到BASE版本 做Update操作时,SVN会打印出受影响文件的状态,有以下几种: A Added D Deleted U Updated C Conflict G Merged 若提示C,表示冲突,冲突可以用status命令加-u参数来预测 Revert操作——时光倒流 所谓Revert,是指放弃对某个文件的修改,把该文件的内容回复和BASE版本相同,也就是,把该文件的状态回复到未修改状态 语法:revert 文件/路径 例子 例1 revert abc.c 丢弃对abc.c的所有修改 例2 revert src/edu/nju/pojo 放弃对此目录下所有文件的修改 冲突解决 当文件发生冲突时,SVN会额外创建3个不受版本控制的文件,同时被冲突文件如果能够合并,会在被冲突文件内部留下冲突记录。例如,冲突的文件为plugin.c,BASE版本是1458,HEAD为1459,会产生3个临时文件plugin.c.mine,plugin.c.r1458,plugin.c.r1459, 解决思路:A. 手动修改被冲突文件 B. 放弃自己的更改 实际中,解决办法很灵活,一般需要与他人商量 注意:由于这3个文件是在Update后才创建的,而Update之后,工作拷贝的BASE目录已经变成更新后的版本了,所以放弃自己的更改会回到新版本 如果不是用Revert的方法解决冲突的话,由于那3个临时文件留在那里,会使Subversion认为冲突没有解决,所以要运行resolved命令告诉SVN冲突解决或者删除临时文件 工作拷贝中对文件的操作 编辑文件,没什么好说的 把一个文件加入SVN版本控制,用add命令 从版本控制中移除,用delete(rm, remove)命令 移动或者重命名,用move(rename)命令 拷贝,用copy命令 创建目录,用mkdir命令 具体命令用法请参照文档 注意:尽量不要用操作系统提供的命令管理文件,这样Subversion不知道更改 检验修改 通过status命令可以检查工作拷贝的状态 通过diff命令可以检查更改的内容 参考SVN手册 注意:SVN对文件属性的更改和文件内容的更改是分开管理的 提交修改 一般在提交修改之前,必须运行一下update操作来合并别人作出的新更改。 提交用commit命令 --message 参数:说明本次提交的有关信息,如为什么要作出这个修改等等。 参考SVN book 5 Subversion高级操作 SVN的高级操作主要包括分支(Branch/Tag)以及合并(Merge)操作 分支操作 切换URL 合并操作 为什么需要分支? 你在开发一个软件,基于Windows平台。有一天,老板找到你,希望你把这个软件移植到Linux平台下,同时又不放弃原有版本,怎么管理代码? 你的产品即将发布,需要进行一段时间的Alpha,Beta测试直至正式版Release。同时,市场的竞争迫使你必须马不停蹄的开发下一个新版本,增加许多新的特性。两个工作必须同时进行,怎么管理代码? 什么是分支? 分支的概念 从图中可以看到,分支是开发的一条“支线”。它独立于其他开发的线路,并且和其他线路并行开发 但是,所有的分支都有共同的历史,有着原先共同的主线 创建分支 创建分支使用copy命令 语法:copy 源目录 目标目录 方法 方法1:先把目录checkout到本地,在本地执行copy命令后提交至版本库
显示全部
相似文档