posts - 134,comments - 22,trackbacks - 0

          花了點(diǎn)時(shí)間把svnbook看了遍,對(duì)于svn有了個(gè)比較好的認(rèn)識(shí)。svn info時(shí),修訂版和最后修改的修訂版總是讓我感覺(jué)很困惑。要搞明白這個(gè)需要對(duì)下面幾個(gè)關(guān)鍵字有所了解。

          HEAD:版本庫(kù)中的最新版本。

          COMMITED:文件最后提交生成的版本號(hào)。

          PREV:文件倒數(shù)第二次提交生成的版本號(hào)。

          BASE:目錄簽出或者簽入生成的版本號(hào)。

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

          若將configure.ac修改并check in,這個(gè)時(shí)候會(huì)生成一個(gè)新的revision,configure.ac的BASE和COMMITED的值相當(dāng)。而svn info Makefile.am,發(fā)現(xiàn)它的BASE和COMMITED沒(méi)有改變。svn up一下,發(fā)現(xiàn)Makefile.am的BASE會(huì)變成最新的,和configure.ac相同。

          簽出代碼庫(kù)。

          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一個(gè)版本庫(kù)的revision是全局的,不管是在trunk還是branch,也不管使用merge合并代碼還是消除修改,簽入和簽出都會(huì)生成一個(gè)新的revision。當(dāng)項(xiàng)目中一個(gè)文件簽入時(shí)會(huì)導(dǎo)致別的文件的BASE暫時(shí)低于HEAD,但是一旦update,二者將保持一致。

          posted on 2012-08-23 13:13 何克勤 閱讀(3406) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): GNU Linux/Unix
          主站蜘蛛池模板: 石林| 台州市| 渝中区| 桦南县| 枣阳市| 山丹县| 东光县| 芦山县| 莆田市| 延吉市| 和政县| 京山县| 山东| 紫金县| 奉节县| 金堂县| 汶川县| 陈巴尔虎旗| 富蕴县| 南雄市| 仙桃市| 阳原县| 弋阳县| 祁连县| 广南县| 张家界市| 锡林郭勒盟| 安化县| 阜康市| 卢龙县| 依安县| 吴江市| 蕲春县| 邹城市| 汪清县| 西峡县| 神池县| 长宁县| 安达市| 环江| 桓仁|