項目最佳化經驗分享(六)SVN衝突和處理

來源:互聯網
上載者:User

    上一篇部落格我們分享了新增需求的確定思想《站在全域看問題》。今天我們來分享項目開發中SVN衝突的解決經驗:SVN衝突和處理!

    引言

    開發過項目的人都知道,公司開發一個項目都會使用到版本控制工具,版本控制工具很多,比如Clear case,CVS,Visual SourceSafe,SourceAnywhere ,StarTeam,SVN,CVS,GIT等等,有的是元老級開發工具,有的是後起之秀,各種版本,百花齊放,這篇部落格我們將要談到的則是常用版本控制工具:SVN的衝突和處理。

    執行個體  
    1.衝突產生

            假設A、B兩個使用者都在版本號碼為1000的時候,更新了practice.txt這個檔案,A使用者在修改完成之後提交practice.txt 到伺服器,這個時候提交成功,然後practice.txt檔案的版本號碼已經變成1001了。同時B使用者在版本號碼為1000的practice.txt檔案上作修改,修改完成之後提交到伺服器時,由於不是在當前最新的1001版本上作的修改,所以導致提交失敗。

           衝突發生時,subversion會在當前工作目錄中儲存所有的目標檔案版本[上次更新版本、當前擷取的版本(即別人提交的版本)、自己更新的版本、目標檔案]。

    (1)現在A、B兩個使用者都更新practice.txt檔案到本地。

    (2)文檔中原始檔案內容如下:

    (3)A使用者修改檔案,新增內容“A使用者修改-提交”完成後提交到伺服器

    (4)B使用者修改檔案,新增內容“B使用者修改-提交”完成後提交到伺服器

    (5)B使用者提交更新至伺服器時提示如下:


    B使用者將檔案提交至伺服器時,提示版本到期:首先應該從版本庫更新版本,然後去解決衝突,衝突解決後要執行svn resolved(解決),然後在簽入到版本庫。在衝突解決之後,需要使用svn resolved(解決)來告訴subversion衝突解決,這樣才能提交更新。

    2. 衝突 處理

    方法一:放棄自己的更新,使用svn Revert(復原),然後提交。


    當使用svn revert時不需要再用svn resolved來刪除臨時檔案了,因為撤銷會恢複所有的檔案到修改前,除了已刪除的檔案。

    方法二:放棄自己的更新,使用別人的更新。使用最新擷取的版本覆蓋目標檔案,執行resolved filename並提交(選擇檔案—右鍵—解決);


    方法三:手動解決,衝突發生時,通過和其他使用者溝通之後,手動更新目標檔案。然後執行resolved filename來解除衝突,最後提交。

    (1)手工合并衝突檔案:當查看了具體出衝突的檔案後,可以開啟該檔案,找到衝突的標誌。
      Top piece of bread
      Mayonnaise
      Lettuce
      Tomato
      Provolone
      <<<<<<< .mine
      Salami
      Mortadella
      Prosciutto
      =======
      Sauerkraut
      Grilled Chicken
      >>>>>>> .r2
      Creole Mustard
      Bottom piece of bread
      小於和大於符號之間的就是衝突的地方,如果有能力在修改完檔案並且刪除衝突標誌之後,進行svn resolved來刪除三個臨時檔案
      註:如果修改時不是很明白,可以參考衝突時的三個檔案
 
    (2)複製某一工作檔案(一般用的不是很頻繁):如果只是希望取消本次的修改,你可拷貝svn為你產生的檔案替換你的工作拷貝
      $ svn update
      C practice.txt
      Updated to revision 2.
      $ ls practice.*
      practice.txt practice.txt.mine practice.txt.r2 practice.txt.r1
      $ cp practice.txt.r2 practice.txt(這裡r2是版本庫裡你此次更新前的版本檔案)
      $ svn resolved practice.txt(用來刪除三個臨時檔案)


     OK!衝突解決!

    提交更新!



    總結

    有時候衝突是不可避免的,但是我們可以盡量降低衝突的複雜度,具體解決方式有: 

    1、當文檔編輯完成後,儘快提交,頻繁的提交/更新可以降低在衝突發生的機率,以及發生時解決衝突的複雜度。

    2、在提交時,寫上明確的message,方便以後尋找使用者更新的原因,畢竟隨著時間的推移,對當初更新的原因有可能會遺忘。

    3、養成良好的使用習慣,使用SVN時每次都是先提交,後更新。每天早上開啟後,首先要從版本庫擷取最新版本。每天下班前必須將已經編輯過的文檔都提交到版本庫。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.