posts - 262,  comments - 221,  trackbacks - 0
          【12】比較本地工作副本和版本庫(kù)的差異
          假設(shè)我們是在一個(gè)團(tuán)隊(duì)的環(huán)境下工作,對(duì)于同一個(gè)項(xiàng)目,可能不同人會(huì)負(fù)責(zé)不同的部分。那么如何保持自己的本地副本時(shí)刻和版本庫(kù)同步呢?最好的方法是經(jīng)常檢查更新并進(jìn)行同步。

          假設(shè)現(xiàn)在團(tuán)隊(duì)里的其他人向ECoupon版本庫(kù)新增了一個(gè)名為ignore.txt的文件,那么我們?nèi)绾沃肋@個(gè)變化呢?還記得我們前面《SVN In Action (3)》的第7節(jié)---查看項(xiàng)目的實(shí)時(shí)信息中提到的svn status命令嗎?根據(jù)SVN文檔只要配合--show-updates參數(shù)就可以顯示本地工作副本尚未更新的變化

          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參數(shù)會(huì)令客戶端顯示本地工作副本那些文件是out-of-date的。它并不會(huì)立即更新本地副本,而是告訴你那些文件會(huì)在下次的svn update中被更新

          這是本地執(zhí)行后的結(jié)果。我們會(huì)看到輸出的結(jié)果有"*"。那么這個(gè)*代表什么含義呢?
           * --- 服務(wù)器上出現(xiàn)了一個(gè)新的受版本控制的文件
           '' --- 本地工作副本的文件已經(jīng)out-of-date

          很明顯從命令輸出結(jié)果來(lái)看,在版本庫(kù)上存在一個(gè)新的受版本控制的文件:ignore.txt。位于doc目錄下,所以現(xiàn)在我們需要立即同步改變

          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】同時(shí)更新本地副本和提交本地變更
          很多時(shí)候程序員總是習(xí)慣在每天工作結(jié)束之前,一次性地提交自己當(dāng)天所做的改動(dòng)。在此之前,如果其他人也對(duì)項(xiàng)目進(jìn)行了修改,那么在提交時(shí)必然會(huì)遇到以下兩個(gè)問(wèn)題:

           A.先提交還是先更新
           B.如果沒(méi)有提交而更新,他人所做的修改會(huì)不會(huì)覆蓋我本地尚未提交的內(nèi)容

          下面我們來(lái)做一個(gè)實(shí)驗(yàn),假設(shè)現(xiàn)在在本地工作副本,我們新增了一個(gè)文件:read-from-local.txt,與此同時(shí)其他人向版本庫(kù)添加了一個(gè)新的read-from-repo.txt文件。下面是執(zhí)行svn status命令的結(jié)果

          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

          命令結(jié)果表示有一個(gè)新的來(lái)自版本庫(kù)的文件:read-from-repo.txt文件和一個(gè)本地新增的read-from-local.txt文件。

          下面我們來(lái)試一下如果不更新直接提交會(huì)如何?
          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.

          可以看到操作成功了,有一點(diǎn)需要留意的是即便我們先提交,版本號(hào)變?yōu)?5,但是執(zhí)行svn status --show-updaets命令時(shí)依然會(huì)告訴我們有些東西還沒(méi)有同步。特別是版本號(hào)13提醒我們現(xiàn)在本地的版本號(hào)依然是13而不是15---因?yàn)槲覀冞€沒(méi)有執(zhí)行update操作,而commit操作是不會(huì)主動(dòng)幫我們update版本的。15是版本庫(kù)的最新版本號(hào)。只有再次執(zhí)行update操作更新后,才會(huì)真正實(shí)現(xiàn)本地和版本庫(kù)的同步

          那么如果是先更新再提交呢?
          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

          結(jié)果依然是同樣的。我們可以看到先update再commit時(shí)版本號(hào)變更了兩次,這是因?yàn)榈谝淮伪镜匕姹颈劝姹編?kù)的版本低,第二次是因?yàn)楸镜靥峤涣诵碌陌姹?br />


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

          常用鏈接

          留言簿(21)

          隨筆分類

          隨筆檔案

          BlogJava熱點(diǎn)博客

          好友博客

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 海南省| 钟祥市| 特克斯县| 肃南| 高阳县| 论坛| 浏阳市| 黑河市| 大邑县| 花莲县| 卢湾区| 舒城县| 武穴市| 简阳市| 遂平县| 静安区| 正定县| 苏州市| 黔西| 宝鸡市| 黔江区| 汝城县| 五指山市| 邹平县| 遂川县| 扶余县| 泸西县| 吉安县| 银川市| 兰考县| 大理市| 盱眙县| 治县。| 德昌县| 花莲县| 鄂尔多斯市| 东乡| 娄烦县| 介休市| 凤台县| 神农架林区|