欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    前言

    很多人因為不知道處理沖突就很久很久都不愿意更新代碼svn標記為解決選項, 另一些人就是不管三七二十一就選了" "或"mine ", 有時候樹沖突根本這兩個選項, 他們就強制了, 到最后新代碼一提交就把別人代碼給覆蓋了. 這樣給團隊合作造成極大的不便, 甚至導致版本故障.

    本文總結最厭惡最難處理的樹沖突, 讓你從此不再恐懼代碼沖突.

    樹沖突的產生

    如果一個文件在不同的端都做了修改, 就產生了分歧, svn在??或merge時會嘗試自動合并, 大部分情況會成功, 但是也有時候會失敗, 這個時候就會提示沖突.從局部來看沖突是因為兩個端對同一對象進行了修改, 樹沖突則是因為兩路修改導致了目錄結夠不一致, 樹沖突的現象都是一端, 另一端. 樹沖突不僅要解決目錄結構沖突, 同時可能需要解決普通的文件內容沖突.

    在沖突發生時, 先可以用這些命令查看一下狀態:

    用svn (st)查看哪些文件沖突了:

    $ svn st
    M       code/foo.c
    A  +  C code/bar.c
          >   local edit, incoming delete upon update
    Summary of conflicts:
      Tree conflicts: 1
    

    用svn info查看沖突信息:

    $ svn info code/bar.c
    Path: code/bar.c
    Name: bar.c
    URL: http://svn.example.com/svn/repo/trunk/code/bar.c
    …
    Tree conflict: local edit, incoming delete upon update
      Source  left: (file) ^/trunk/code/bar.c@4
      Source right: (none) ^/trunk/code/bar.c@5
    

    也可以用svn log看下何時改的:

    $ svn log -r14 ^/trunk
    ------------------------------------------------------------------------
    r14 | harry | 2011-09-06 10:38:17 -0400 (Tue, 06 Sep 2011) | 1 line
    Changed paths:
       M /Makefile
       D /code/bar.c
       A /code/baz.c (from /code/bar.c:13)
    Rename bar.c to baz.c, and adjust Makefile accordingly.
    

    沖突處理

    我們按文件原因和需不需要分類處理

    1. 文件被刪除了, 不再需要了

    這種情況就很好處理, 使用相關SVN命令將其刪了就可以了.

    服務端, 本地, 該文件不要了. 這種情況本地不會存在該文件, 直接調用就可以了.

    #標記沖突已解決(使用本地的狀態, 本地該文件的狀態是Delete, 提交后服務端對應的文件就會被刪除)
    $ svn resolve --accept=working file_old.c
    

    本地, 服務端, 該文件不要了. 這種情況本地存在改文件, 所以強制刪掉本地的, 再調用

    #強制刪除本地的文件(發生的文件不加--force是刪不掉的)
    $ svn delete --force file_old.c
    #標記沖突已解決(使用服務器狀態)
    $ svn resolve --accept=theirs-conflict file_old.c
    #或者使用本地狀態也可以, 應該本地的狀態跟服務一致了(都是Delete)
    $ svn resolve --accept=working file_old.c
    

    2. 文件被刪除了, 但是還需要

    這種情況可能是由于文件被不小心刪除了, 重新加回svn就可以了.

    服務端, 本地, 選擇their 就可以了

    svn resolve --accept=theirs-conflict file.c
    

    本地, 服務端

    svn resolve --accept=working file.c
    

    3. 文件被移走或重命名了

    這種情況的具體場景是A端修改了某文件, B端移動或重命名(簡稱改路徑)了該文件. 這種情況需要分兩步處理, 分別是文件內容沖突處理和目錄結構沖突處理.

    為了方便描述, 我們把A端修改的文件成為舊文件, B端改路徑的文件稱為新文件. 我們最終要的是新文件還是舊文件, 在處理時只有細微的區別, 所以我們這里假定我們要的時新文件.

    由于B端改路徑之后還可能又做了修改, 下面我們就有無修改分成兩種情況來處理.

    文件改路徑后無修改. 這個情況很好處理,只要把A端的修改重做一遍就可以svn標記為解決選項, 具體做法是, 將A端的修改做成一個補丁, 再將補丁應用于新文件上.

    $ svn diff bar.c > PATCHFILE  #創建補丁文件
    $ vi PATCHFILE  #編輯補丁文件
    ...
    ---bar.c    (working copy)  #將這行的bar.c改成baz.c
    +++bar.c    (working copy)  #將這行的bar.c也改成baz.c
    ...
    svn patch PATCHFILE .    #應用補丁到當前目錄(補丁只能應用到目錄)
    

    結構處理:

    svn delete --force bar.c    #將已經missing的文件狀態改為D
    svn resolve --accept=working bar.c    #標記已解決(此處也可用theirs-conflict)
    

    $ svn info bar.c #先使用svn info查看詳情
    Tree conflict: local file moved away, incoming file edit upon update
      Source  left: (file) bar.c@1485
      Source right: (file) bar.c@1486
    $ svn diff -r1485:1486 bar.c > PATCHFILE  #根據詳情創建補丁文件
    $ vi PATCHFILE  #編輯補丁文件
    ...
    ---bar.c    (working copy)  #將這行的bar.c改成baz.c
    +++bar.c    (working copy)  #將這行的bar.c也改成baz.c
    ...
    svn patch PATCHFILE .    #應用補丁到當前目錄(補丁只能應用到目錄)
    

    結構處理:

    svn resolve --accept=working bar.c   #標記已解決
    

    文件改路徑后有修改. 這種情況目錄結構沖突處理跟上面類似, 這里就不再累述了, 但是的文件內容沖突處理比較麻煩, 目前還沒有找到自動合并的方法, 需要手動合并, 這里只能是給點建議, 建議是先用svn diff 查看就舊文件的改動作為索引:

    $ svn info bar.c #找到舊文件變化的版本
    Tree conflict: local file moved away, incoming file edit upon update
      Source  left: (file) bar.c@1485
      Source right: (file) bar.c@1486
    $ svn diff -r1485:1486 bar.c #查看變化的內容
    Index: bar.c
    ===================================================================
    --- bar.c   (revision 1485)
    +++ bar.c   (revision 1486)
    @@ -3,4 +3,5 @@
    void main()
    {
    printf("hello")
    +printf("world")
    }
    

    之后, 在用圖形界面工具(如 )比對舊文件與新文件, 將svn diff里的變更點一個一個手動應用到新文件.

    其他說明

    *由于merge產生的沖突和產生的沖突現象和處理方法都是一樣的, 所以我們這里處理只針對了, merge產生沖突時, 只要把源分支當成服務端按一致的方法處理就可以了.

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有