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

Code@Pig Home

喜欢背着一袋Code傻笑的Pig .. 忧美.欢笑.记忆.忘却 .之. 角落

 
 
 

日志

 
 

[SVN] HEAD/BASE/COMMITTED/PREV之间的dusty关系  

2014-09-05 16:28:06|  分类: scm_svn |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
老文章搬家:http://www.blogbus.com/kstack-logs/3080410.html

1. 概念
-------------

HEAD      - The lastest revision in the repository.
BASE      - The “pristine” revision of an item in a working copy.
COMMITTED - The last revision in which an item changed before (or at) BASE.
PREV      - The revision just before the last revision in which an item changed. (Technically, COMMITTED - 1.)

HEAD - 目前repository上最新的revision,也许个人在操作wc的时候,有其他的成员commit成果,那么HEAD会变化的。

BASE - 对于一个item,BASE指我们check out的那个revision。

COMMITTED - 其必然 <= BASE,对于一个item,COMMITTED是最后修改时的那个revision。

PREV - (COMMITTED - 1)

上面的解释看不明白就是正常,请继续阅读……


2. 从item & revision引发的讨论
-------------

item,就是SVN中被管理的东东(包括folder、file)。而每次commit都会产生一个snapshot,并记录一个revision。对于revision,it's not valid to talk about “revision 5 of foo.c”. Instead, one would say “foo.c as it appears in revision 5”.

例如:
有文件 foo.c、bar.c

     13          17               24          25           26
-----|----...----|-------...------|-----------|------------|--------- trunk
  M foo.c      M foo.c          M bar.c     M bar.c       others ...
  
我们在r24之前,都没有对bar.c进行改动,因此,bar.c在 1 ~ 23 里面的内容是一样的。而在r24, r25,foo.c 的内容与其在 r23 的时候没有区别。

这时,我们check out [trunk@24]。并在trunk目录下
svn st -v
则可以看到
---------------------------------------------
       BASE   COMMITTED         // 这一行SVN不会显示
        24 24 . 
 24 17 foo.c
 24 24 bar.c
 ...
 
其中foo.c与bar.c的COMMITTED是不一样的。

这时,我们进行r25的行为,修改了bar.c,并commit了。并
svn st -v
可以看到
---------------------------------------------
       BASE   COMMITTED         // 这一行SVN不会显示
        24 24 .
 24 17 foo.c
 25 25 bar.c
 ...

这说明了此时bar.c的变化情况。为何foo.c的BASE还是24呢?因为此时的foo.c是r24那时的foo.c。ok,我们
svn up
然后
svn st -v
---------------------------------------------
       BASE   COMMITTED         // 这一行SVN不会显示
        25 25 .
 25 17 foo.c
 25 25 bar.c
 ...

Yeah~,一切ok。


说完了最麻烦的BASE和COMMITTED。
PREV没什么好说的。而HEAD,如果r26为最后一个提交到repository的改动,那么r26就是HEAD罗~


3. 总结
-------------

感谢阅读到这里,打字很辛苦。来,给点掌声。:o)
这里的理解不一定正确,欢迎讨论。
  评论这张
 
阅读(603)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

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

页脚

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