花了點時間把svnbook看了遍,對于svn有了個比較好的認識。svn info時,修訂版和最后修改的修訂版總是讓我感覺很困惑。要搞明白這個需要對下面幾個關(guān)鍵字有所了解。
HEAD:版本庫中的最新版本。
COMMITED:文件最后提交生成的版本號。
PREV:文件倒數(shù)第二次提交生成的版本號。
BASE:目錄簽出或者簽入生成的版本號。
HEAD、COMMITED和PREV比較好理解,BASE比較難于理解。假設(shè)一個目錄下有兩個文件configure.ac和Makefile.am,第一次將它們check out出來時,會生成一個新的revision,這個便是BASE了。此時使用svn info configure.ac/Makefile.am可以發(fā)現(xiàn)它們的修訂版是一樣的,但是最后修改的修訂版不同。這里的修訂版對應(yīng)其實就是BASE,而最后修改的修訂版則是COMMITED。插一句,很多人很容易誤解為啥修訂版號和最后修改的修訂版號不一致。
若將configure.ac修改并check in,這個時候會生成一個新的revision,configure.ac的BASE和COMMITED的值相當(dāng)。而svn info Makefile.am,發(fā)現(xiàn)它的BASE和COMMITED沒有改變。svn up一下,發(fā)現(xiàn)Makefile.am的BASE會變成最新的,和configure.ac相同。
簽出代碼庫。
1 | [henshao@henshao ~/svn]$ svn co file:///Users/henshao/svn/dogg/learn_svn/ learn_svn2 |
3 | A learn_svn2/trunk/configure.ac |
4 | A learn_svn2/trunk/Makefile.am |
5 | Checked out revision 17. |
顯示修訂版(BASE)和最后修改的修訂版(COMMITED)。
01 | [henshao@henshao ~/svn/learn_svn2/trunk]$ svn st -v |
03 | 17 17 henshao configure.ac |
04 | 17 15 henshao Makefile.am |
06 | [henshao@henshao ~/svn/learn_svn2/trunk]$ svn info Makefile.am |
09 | URL: file:///Users/henshao/svn/dogg/learn_svn/trunk/Makefile.am |
10 | Repository Root: file:///Users/henshao/svn/dogg |
11 | Repository UUID: 7ee338c4-a6e3-468b-b576-d1b767dd90e2 |
15 | Last Changed Author: henshao |
17 | Last Changed Date: 2011-06-23 17:03:08 +0800 (四, 23 6 2011) |
18 | Text Last Updated: 2011-06-23 18:37:50 +0800 (四, 23 6 2011) |
19 | Checksum: 5b211a202b8ae001a86a557108d4989c |
修改Makefile.am并簽入看看。
01 | [henshao@henshao ~/svn/learn_svn2/trunk]$ svn ci Makefile.am -m "LD_ADD add ssl library" |
03 | Transmitting file data . |
06 | [henshao@henshao ~/svn/learn_svn2/trunk]$ svn info Makefile.am |
09 | URL: file:///Users/henshao/svn/dogg/learn_svn/trunk/Makefile.am |
10 | Repository Root: file:///Users/henshao/svn/dogg |
11 | Repository UUID: 7ee338c4-a6e3-468b-b576-d1b767dd90e2 |
15 | Last Changed Author: henshao |
17 | Last Changed Date: 2011-06-23 18:41:41 +0800 (四, 23 6 2011) |
18 | Text Last Updated: 2011-06-23 18:41:31 +0800 (四, 23 6 2011) |
19 | Checksum: e4cc7bf424ff911c9619060a5f1c1030 |
21 | [henshao@henshao ~/svn/learn_svn2/trunk]$ svn info configure.ac |
24 | URL: file:///Users/henshao/svn/dogg/learn_svn/trunk/configure.ac |
25 | Repository Root: file:///Users/henshao/svn/dogg |
26 | Repository UUID: 7ee338c4-a6e3-468b-b576-d1b767dd90e2 |
30 | Last Changed Author: henshao |
32 | Last Changed Date: 2011-06-23 17:44:51 +0800 (四, 23 6 2011) |
33 | Text Last Updated: 2011-06-23 18:37:50 +0800 (四, 23 6 2011) |
34 | Checksum: 6b49ae8f3346120311e11843c23b0b00 |
svn update一下看看。
01 | [henshao@henshao ~/svn/learn_svn2/trunk]$ svn up |
04 | [henshao@henshao ~/svn/learn_svn2/trunk]$ svn info configure.ac |
07 | URL: file:///Users/henshao/svn/dogg/learn_svn/trunk/configure.ac |
08 | Repository Root: file:///Users/henshao/svn/dogg |
09 | Repository UUID: 7ee338c4-a6e3-468b-b576-d1b767dd90e2 |
13 | Last Changed Author: henshao |
15 | Last Changed Date: 2011-06-23 17:44:51 +0800 (四, 23 6 2011) |
16 | Text Last Updated: 2011-06-23 18:37:50 +0800 (四, 23 6 2011) |
17 | Checksum: 6b49ae8f3346120311e11843c23b0b00 |
19 | [henshao@henshao ~/svn/learn_svn2/trunk]$ svn st -v |
21 | 18 17 henshao configure.ac |
22 | 18 18 henshao Makefile.am |
svn一個版本庫的revision是全局的,不管是在trunk還是branch,也不管使用merge合并代碼還是消除修改,簽入和簽出都會生成一個新的revision。當(dāng)項目中一個文件簽入時會導(dǎo)致別的文件的BASE暫時低于HEAD,但是一旦update,二者將保持一致。
posted on 2012-08-23 13:13
何克勤 閱讀(3394)
評論(0) 編輯 收藏 所屬分類:
GNU Linux/Unix