花了點(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 |
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一個(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