zoukankan      html  css  js  c++  java
  • SVN 冲突文件详解

    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保持一致,用于统一,批量处理。

  • 相关阅读:
    百度Hi之CSRF蠕虫攻击
    Portlet之讲解
    try-catch语句讲解
    unset之讲解
    MySQL bin-log 日志清理方式
    php数组array_push()和array_pop()以及array_shift()函数
    php中的func_num_args、func_get_arg与func_get_args函数
    PHP is_callable 方法
    如何实现php异步处理
    Mysql并发时经典常见的死锁原因及解决方法
  • 原文地址:https://www.cnblogs.com/cxd4321/p/2818337.html
Copyright © 2011-2022 走看看