posts - 262,  comments - 221,  trackbacks - 0
          【12】比較本地工作副本和版本庫的差異
          假設我們是在一個團隊的環境下工作,對于同一個項目,可能不同人會負責不同的部分。那么如何保持自己的本地副本時刻和版本庫同步呢?最好的方法是經常檢查更新并進行同步。

          假設現在團隊里的其他人向ECoupon版本庫新增了一個名為ignore.txt的文件,那么我們如何知道這個變化呢?還記得我們前面《SVN In Action (3)》的第7節---查看項目的實時信息中提到的svn status命令嗎?根據SVN文檔只要配合--show-updates參數就可以顯示本地工作副本尚未更新的變化

          C:\>svn status E:\Temp\ECoupon --show-updates
                 
          *            E:\Temp\ECoupon\doc\ignore.txt
                 
          *       11   E:\Temp\ECoupon\doc
          Status against revision:     
          13

          show-updates參數會令客戶端顯示本地工作副本那些文件是out-of-date的。它并不會立即更新本地副本,而是告訴你那些文件會在下次的svn update中被更新

          這是本地執行后的結果。我們會看到輸出的結果有"*"。那么這個*代表什么含義呢?
           * --- 服務器上出現了一個新的受版本控制的文件
           '' --- 本地工作副本的文件已經out-of-date

          很明顯從命令輸出結果來看,在版本庫上存在一個新的受版本控制的文件:ignore.txt。位于doc目錄下,所以現在我們需要立即同步改變

          C:\>svn update E:\Temp\ECoupon
          A    E:
          \Temp\ECoupon\doc\ignore.txt
          Updated 
          to revision 13.

          C:
          \>svn status E:\Temp\ECoupon --show-updates
          Status against revision:     
          13

          【13】同時更新本地副本和提交本地變更
          很多時候程序員總是習慣在每天工作結束之前,一次性地提交自己當天所做的改動。在此之前,如果其他人也對項目進行了修改,那么在提交時必然會遇到以下兩個問題:

           A.先提交還是先更新
           B.如果沒有提交而更新,他人所做的修改會不會覆蓋我本地尚未提交的內容

          下面我們來做一個實驗,假設現在在本地工作副本,我們新增了一個文件:read-from-local.txt,與此同時其他人向版本庫添加了一個新的read-from-repo.txt文件。下面是執行svn status命令的結果

          C:\>svn status E:\Temp\ECoupon --show-updates
                 
          *            E:\Temp\ECoupon\read-from-repo.txt
          A               
          0   E:\Temp\ECoupon\read-from-local.txt
                 
          *       13   E:\Temp\ECoupon
          Status against revision:     
          14

          命令結果表示有一個新的來自版本庫的文件:read-from-repo.txt文件和一個本地新增的read-from-local.txt文件。

          下面我們來試一下如果不更新直接提交會如何?
          C:\>svn commit E:\Temp\ECoupon -"commit before update wc"
          Adding         E:
          \Temp\ECoupon\read-from-local.txt
          Transmitting file data .
          Committed revision 
          15.

          C:
          \>svn status E:\Temp\ECoupon --show-updates
                 
          *            E:\Temp\ECoupon\read-from-repo.txt
                 
          *       13  E:\Temp\ECoupon
          Status against revision:     
          15

          C:
          \>svn update E:\Temp\ECoupon
          A    E:
          \Temp\ECoupon\read-from-repo.txt
          Updated 
          to revision 15.

          可以看到操作成功了,有一點需要留意的是即便我們先提交,版本號變為15,但是執行svn status --show-updaets命令時依然會告訴我們有些東西還沒有同步。特別是版本號13提醒我們現在本地的版本號依然是13而不是15---因為我們還沒有執行update操作,而commit操作是不會主動幫我們update版本的。15是版本庫的最新版本號。只有再次執行update操作更新后,才會真正實現本地和版本庫的同步

          那么如果是先更新再提交呢?
          C:\>svn update E:\Temp\ECoupon
          A    E:
          \Temp\ECoupon\read-from-repo.txt
          Updated 
          to revision 17.

          C:
          \>svn status E:\Temp\ECoupon --show-updates
          A               
          0   E:\Temp\ECoupon\read-from-wc.txt
          Status against revision:     
          17

          C:
          \>svn commit E:\Temp\ECoupon -"commit after update"
          Adding         E:
          \Temp\ECoupon\read-from-wc.txt
          Transmitting file data .
          Committed revision 
          18.

          C:
          \>svn status E:\Temp\ECoupon --show-updates
          Status against revision:     
          18

          結果依然是同樣的。我們可以看到先update再commit時版本號變更了兩次,這是因為第一次本地版本比版本庫的版本低,第二次是因為本地提交了新的版本


          -------------------------------------------------------------
          生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
          posted on 2009-12-08 21:50 Paul Lin 閱讀(346) 評論(0)  編輯  收藏 所屬分類: 項目管理
          <2009年12月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(21)

          隨筆分類

          隨筆檔案

          BlogJava熱點博客

          好友博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 遂川县| 基隆市| 龙口市| 新河县| 奉新县| 兴化市| 台中市| 蒙城县| 额敏县| 营山县| 根河市| 鸡西市| 高雄市| 阿拉善盟| 万盛区| 达日县| 安康市| 任丘市| 佳木斯市| 徐州市| 宿州市| 宁武县| 石河子市| 双柏县| 衡南县| 阜宁县| 柞水县| 尉氏县| 蛟河市| 吉木萨尔县| 舟曲县| 天门市| 襄垣县| 安溪县| 石屏县| 天峻县| 桃园市| 泰州市| 洛阳市| 吉水县| 桂阳县|