zoukankan      html  css  js  c++  java
  • 转:SVN中冲突的解决

    本人使用SVN的时间不是很长,在使用之前也仅仅是粗浅的了解过这个软件。从今年的8月份开始,由于一个项目使用Eclipse 3.1,跨地域的开发,为了适应不同的开发人员处于不同的地理位置,因此我们使用SVN作为团队开发的管理工具。开始使用时,仅仅是边学边用,遇到不懂的地方再去查找资料。今天由于有点时间,先把合并过程遇到的冲突问题详细了解一下。

           可以使用svn status -u命令来查看一下某个问题是否会有冲突发生。在使用svn update 的时候,会出现如下一些信息:
    $ svn update
    U  INSTALL
    G  README
    C  bar.c
    Updated to revision 46.

    那么,U 开头的信息提示你,这个文件在你本地没有修改过,文件已经根据版本库的新版本更新了。G 开头的信息提示你,这个文件在你本地已经修改过,但是和版本库中对应的版本并没有冲突的地方,svn已经合并更新了。而C 开头的信息提示你,这个文件有点麻烦,你在本地的修改和版本库中的版本修改的地方重叠了,也就是说,你修改了某一行,你的同事也修改了同一行。这个就需要你自己手工去解决了。当冲突发生时,要注意到有三件事情可以帮助你解决问题。
             a.Subversion会给这个文件作出c标记。
             b.如果Subversion认为这个文件时可以合并的,它会一个冲突标记(特殊的横线来分开冲突的代码块)
             c.对每一个冲突的文件,Subversion放置三个额外的未版本化文件到你的工作拷贝。

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

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

    filename.rNEWREV
          这是Subversion从服务器刚刚收到的版本。这个版本就是版本库的HEAD版本。


    例如,如果sally修改了一个文件sandwich.txt, 而harry也刚刚修改了这个文件的相同位置并提交到服务器。那么sally在做这个文件的update操作的时候会得到三个额外的文件sandwich.txt.mine、sandwich.txt.r1、sandwich.txt.r2。并且在提交的时候会遭到服务器的拒绝,因为这个文件的冲突问题还没有得到解决。要解决这个冲突,可以选择:
             a. 手工合并冲突文件(检查和修改文件中的冲突标志)。
             b.用一个临时文件(三个中的一个)覆盖你的工作文件。
             c.运行svn revert <filename>来放弃所有的修改。

    一旦解决了你的冲突,需要通过命令svn resolved让subversion知道并删除三个临时文件。这时才可以提交。

    下面再说说手工合并冲突。开始的时候让人觉得害怕,但做一段时间之后,就觉得不那么烦人了。

    看看如下文本:
    Mayonnaise
    Lettuce
    Tomato
    Provolone
    <<<<<<< .mine
    Salami
    Mortadella
    Prosciutto
    =======
    Sauerkraut
    Grilled Chicken
    >>>>>>> .r2
    Creole Mustard


    一连串的大于、小于、等于号是冲突标记,这些数据得全部删除才可以提交。其中,
       <<<<<<< .mine
    Salami
    Mortadella
    Prosciutto
    =======
    是你在冲突区里面做的修改。

    Sauerkraut
    Grilled Chicken
    >>>>>>> .r2
     是别人在冲突区做的修改。

    在冲突区中,或许你需要和你的同事沟通来安排冲突区的文本内容,如果是程序代码,你需要和同事商量一下,中间的这段代码到底应该是什么样子的。

    所有冲突区得到合理的解决之后,你就可以提交你的文件了。

    http://www.blogjava.net/shrode/articles/85598.html

  • 相关阅读:
    时间戳与时间之间的相互转化
    源代码管理之Git命令的使用
    ios最新设置状态栏字体颜色总结
    iOS 代码方式设置按钮标题、图片的偏移
    runloop简单介绍
    iOS中的多线程NSThread/GCD/NSOperation & NSOperationQueue
    AFNetworking的详细解析
    MATLAB相关快捷键以及常用函数
    CentOS 5.8下快速搭建FTP服务器
    php获取跳转后的真实链接
  • 原文地址:https://www.cnblogs.com/allenblogs/p/2123571.html
Copyright © 2011-2022 走看看