注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

淘尽网 官方博客

淘尽网http://www.tao3w.com做最好的比价网站

 
 
 

日志

 
 
关于我

淘尽网 http://www.tao3w.com 做最好的比价网站,做最好的数据抓取专家。

网易考拉推荐

SVN 冲突文件详解  

2012-07-11 13:28:33|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
filename.mine
     你更新前的文件,没有冲突标志,只是你最新更改的内容。(如果这个文件不可以合并,.mine文件不会创建,因为它和工作文件相同。)

filename.rOLDREV
     这个是你做更新操作以前的BASE版本,就是你在上次更新之后未作更改的版本。【其实是 BASE版本号

filename.rNEWREV
       这是Subversion从服务器刚刚收到的版本。这个版本就是版本库的HEAD版本。
再来介绍一下什么是BASE版本

对BASE不清楚的,可以查看下面内容

svn关键词BASE, HEAD, COMMITTED, PREV可以很方便用于日常操作中,但是很多人对他们的工作原理和方式不是太了解。

在这里我将使用用例,诠释他们的作用和意图。

先给出svn手册中对他的解释:

 "HEAD"       latest in repository
 "BASE"       base rev of item's working copy
 "COMMITTED"  last commit at or before BASE
 "PREV"       revision just before COMMITTED

 

HEAD表示在版本库中最新的版本,记住一定是版本库,而不是某个working-copy, 另外需要注意的是,这里提到版本库是指对应working-copy的那个分支或主干。

COMMITTED表示在working-copy中最近的一次提交版本。

PREV表示在working-copy中最近的倒数第二次提交版本,也就是COMMITTED - 1。

前面3个概念都是比较好理解的。

最后一个BASE有点不好理解,先给出例子,最后结论BASE的含义

 

 

  1. -bash-2.05b$ svn co http://svn.corp/.../proxyio/
  2. A    proxylog/proxyio.procinfo
  3. A    proxylog/pi.cpp
  4. A    proxylog/Makefile
  5. A    proxylog/run.sh
  6. Checked out revision 134057.
  7. -bash-2.05b$ svn st -v
  8.            134057   134034 deyi.long    .
  9.            134057   102502 deyi.long    proxyio.procinfo
  10.            134057   134034 deyi.long    pi.cpp
  11.            134057   102674 deyi.long    Makefile
  12.            134057   114428 deyi.long    run.sh
  13. 备注:第一列表示BASE, 第二列表示COMMITTED

可以看出checkout一个working-copy后,svn会给这个working-copy分一个新的、统一的BASE版本号(如 134057)。

接下来可以修改pi.cpp代码,然后checkin,你就会发现这个文件的BASE和COMMITTED会同时增加,并且相等。如下

 

  1. -bash-2.05b$ svn st -v
  2.            134057   134034 deyi.long    .
  3.            134057   102502 deyi.long    proxyio.procinfo
  4.            134058   134058 deyi.long    pi.cpp
  5.            134057   102674 deyi.long    Makefile
  6.            134057   114428 deyi.long    run.sh

接下来在此目录下执行update动作,你就会发现所有文件的BASE都进行了升级,但是COMMITTED没有改变,如下

 

  1. -bash-2.05b$ svn up
  2. At revision 134058.
  3. -bash-2.05b$ svn st -v
  4.            134058   134034 deyi.long    .
  5.            134058   102502 deyi.long    proxyio.procinfo
  6.            134058   134058 deyi.long    pi.cpp
  7.            134058   102674 deyi.long    Makefile
  8.            134058   114428 deyi.long    run.sh

通过上述用例,可以看出BASE表示在working-copy中每个文件基准版本,会经常变动,并且有统一working-copy的版本的意图。另外,也说明对每个文件来说,BASE就是COMMITTED的别名,但是它可以和其他文件BASE保持一致,用于统一,批量处理。

  评论这张
 
阅读(218)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017