posts - 134,comments - 22,trackbacks - 0

          花了點時間把svnbook看了遍,對于svn有了個比較好的認識。svn info時,修訂版和最后修改的修訂版總是讓我感覺很困惑。要搞明白這個需要對下面幾個關鍵字有所了解。

          HEAD:版本庫中的最新版本。

          COMMITED:文件最后提交生成的版本號。

          PREV:文件倒數第二次提交生成的版本號。

          BASE:目錄簽出或者簽入生成的版本號。

          HEAD、COMMITED和PREV比較好理解,BASE比較難于理解。假設一個目錄下有兩個文件configure.ac和Makefile.am,第一次將它們check out出來時,會生成一個新的revision,這個便是BASE了。此時使用svn info configure.ac/Makefile.am可以發現它們的修訂版是一樣的,但是最后修改的修訂版不同。這里的修訂版對應其實就是BASE,而最后修改的修訂版則是COMMITED。插一句,很多人很容易誤解為啥修訂版號和最后修改的修訂版號不一致。

          若將configure.ac修改并check in,這個時候會生成一個新的revision,configure.ac的BASE和COMMITED的值相當。而svn info Makefile.am,發現它的BASE和COMMITED沒有改變。svn up一下,發現Makefile.am的BASE會變成最新的,和configure.ac相同。

          簽出代碼庫。

          1[henshao@henshao ~/svn]$ svn co file:///Users/henshao/svn/dogg/learn_svn/ learn_svn2
          2A    learn_svn2/trunk
          3A    learn_svn2/trunk/configure.ac
          4A    learn_svn2/trunk/Makefile.am
          5Checked out revision 17.

          顯示修訂版(BASE)和最后修改的修訂版(COMMITED)。

          01[henshao@henshao ~/svn/learn_svn2/trunk]$ svn st -v
          02                17       17 henshao      .
          03                17       17 henshao      configure.ac
          04                17       15 henshao      Makefile.am
          05  
          06[henshao@henshao ~/svn/learn_svn2/trunk]$ svn info Makefile.am
          07Path: Makefile.am
          08Name: Makefile.am
          09URL: file:///Users/henshao/svn/dogg/learn_svn/trunk/Makefile.am
          10Repository Root: file:///Users/henshao/svn/dogg
          11Repository UUID: 7ee338c4-a6e3-468b-b576-d1b767dd90e2
          12Revision: 17
          13Node Kind: file
          14Schedule: normal
          15Last Changed Author: henshao
          16Last Changed Rev: 15
          17Last Changed Date: 2011-06-23 17:03:08 +0800 (四, 23  6 2011)
          18Text Last Updated: 2011-06-23 18:37:50 +0800 (四, 23  6 2011)
          19Checksum: 5b211a202b8ae001a86a557108d4989c

          修改Makefile.am并簽入看看。

          01[henshao@henshao ~/svn/learn_svn2/trunk]$ svn ci Makefile.am -m "LD_ADD add ssl library"
          02Sending        Makefile.am
          03Transmitting file data .
          04Committed revision 18.
          05  
          06[henshao@henshao ~/svn/learn_svn2/trunk]$ svn info Makefile.am
          07Path: Makefile.am
          08Name: Makefile.am
          09URL: file:///Users/henshao/svn/dogg/learn_svn/trunk/Makefile.am
          10Repository Root: file:///Users/henshao/svn/dogg
          11Repository UUID: 7ee338c4-a6e3-468b-b576-d1b767dd90e2
          12Revision: 18
          13Node Kind: file
          14Schedule: normal
          15Last Changed Author: henshao
          16Last Changed Rev: 18
          17Last Changed Date: 2011-06-23 18:41:41 +0800 (四, 23  6 2011)
          18Text Last Updated: 2011-06-23 18:41:31 +0800 (四, 23  6 2011)
          19Checksum: e4cc7bf424ff911c9619060a5f1c1030
          20  
          21[henshao@henshao ~/svn/learn_svn2/trunk]$ svn info configure.ac
          22Path: configure.ac
          23Name: configure.ac
          24URL: file:///Users/henshao/svn/dogg/learn_svn/trunk/configure.ac
          25Repository Root: file:///Users/henshao/svn/dogg
          26Repository UUID: 7ee338c4-a6e3-468b-b576-d1b767dd90e2
          27Revision: 17
          28Node Kind: file
          29Schedule: normal
          30Last Changed Author: henshao
          31Last Changed Rev: 17
          32Last Changed Date: 2011-06-23 17:44:51 +0800 (四, 23  6 2011)
          33Text Last Updated: 2011-06-23 18:37:50 +0800 (四, 23  6 2011)
          34Checksum: 6b49ae8f3346120311e11843c23b0b00

          svn update一下看看。

          01[henshao@henshao ~/svn/learn_svn2/trunk]$ svn up
          02At revision 18.
          03  
          04[henshao@henshao ~/svn/learn_svn2/trunk]$ svn info configure.ac
          05Path: configure.ac
          06Name: configure.ac
          07URL: file:///Users/henshao/svn/dogg/learn_svn/trunk/configure.ac
          08Repository Root: file:///Users/henshao/svn/dogg
          09Repository UUID: 7ee338c4-a6e3-468b-b576-d1b767dd90e2
          10Revision: 18
          11Node Kind: file
          12Schedule: normal
          13Last Changed Author: henshao
          14Last Changed Rev: 17
          15Last Changed Date: 2011-06-23 17:44:51 +0800 (四, 23  6 2011)
          16Text Last Updated: 2011-06-23 18:37:50 +0800 (四, 23  6 2011)
          17Checksum: 6b49ae8f3346120311e11843c23b0b00
          18  
          19[henshao@henshao ~/svn/learn_svn2/trunk]$ svn st -v
          20                18       18 henshao      .
          21                18       17 henshao      configure.ac
          22                18       18 henshao      Makefile.am

          svn一個版本庫的revision是全局的,不管是在trunk還是branch,也不管使用merge合并代碼還是消除修改,簽入和簽出都會生成一個新的revision。當項目中一個文件簽入時會導致別的文件的BASE暫時低于HEAD,但是一旦update,二者將保持一致。

          posted on 2012-08-23 13:13 何克勤 閱讀(3406) 評論(0)  編輯  收藏 所屬分類: GNU Linux/Unix
          主站蜘蛛池模板: 黄山市| 龙口市| 襄樊市| 阜康市| 安康市| 高青县| 阿瓦提县| 新闻| 天镇县| 奉新县| 德保县| 聂荣县| 蓝田县| 新竹县| 迁安市| 磐石市| 兰溪市| 高安市| 聊城市| 老河口市| 随州市| 盐城市| 抚宁县| 资阳市| 江陵县| 左云县| 连南| 黎川县| 疏勒县| 石台县| 泾阳县| 厦门市| 镇康县| 云霄县| 佛山市| 都兰县| 斗六市| 嵊州市| 周宁县| 项城市| 驻马店市|