【6】查看項目的版本控制信息 在上一節(jié),我們成功地為項目ECoupon添加了版本控制功能,現(xiàn)在我們想看看添加了版本控制功能的項目,到底有什么不同。應(yīng)該如何做呢? 還記得我們在《SVN In Action (1)》的第2節(jié)--訪問版本庫中那個命令列表嗎?其中的第2列就是“顯示版本信息”。我們可以看到和svn list以及svnlook tree命令一樣,SVN同樣為服務(wù)端和客戶端提供了兩個命令。它們就是: A.svn info:用于客戶端查看版本信息 B.svnlook info:用于服務(wù)端查看版本信息 為了讓大家有一個感性的認(rèn)識,我先演示這兩個命令的輸出: C:\>svn info E:\Temp\ECoupon Path: E:\Temp\ECoupon URL: http://localhost:8000/svn/Workspace/Ericsson/ECoupon Repository Root: http://localhost:8000/svn/Workspace Repository UUID: 06f3a259-b3b5-ff4e-9a70-52e8834f1976 Revision: 5 Node Kind: directory Schedule: normal Last Changed Author: qlinpen Last Changed Rev: 4 Last Changed Date: 2009-12-07 17:33:17 +0800 (星期一, 07 十二月 2009) C:\>svnlook info C:\Develop\MyRepository\Workspace \Ericsson\ECoupon qlinpen 2009-12-07 17:34:54 +0800 (星期一, 07 十二月 2009) 25 create project Newsletter 可以看到雖然同樣都是info子命令,但是兩者的執(zhí)行結(jié)果完全不同。實際上他們的輸出主要包括 A.svn info:顯示本地或遠(yuǎn)程條目(Item)指定版本的信息 B.svnlook info:顯示指定版本的條目(Item)的作者、時間戳、日志大小、日志內(nèi)容 對于svn info,它可以顯示的內(nèi)容非常多,有: •Path •Name •URL •RepositoryRoot •RepositoryUUID •Revision •NodeKind •LastChangedAuthor •LastChangedRevision •LastChangedDate •LockToken •LockOwner •LockCreated(date) •LockExpires(date) 除此之外還有一些額外的選項。可以看到svn info命令比svnlook info命令好用多了!實際上svn info命令不單可以用于顯示本地條目信息,也可以用于顯示遠(yuǎn)程(版本庫)條目的信息: C:\>svn info http://localhost:8000/svn/Workspace/Ericsson/ECoupon Path: ECoupon URL: http://localhost:8000/svn/Workspace/Ericsson/ECoupon Repository Root: http://localhost:8000/svn/Workspace Repository UUID: 06f3a259-b3b5-ff4e-9a70-52e8834f1976 Revision: 5 Node Kind: directory Last Changed Author: qlinpen Last Changed Rev: 4 Last Changed Date: 2009-12-07 17:33:17 +0800 (星期一, 07 十二月 2009) 可以看到除了第一個輸出Path有所不同之外,其它版本信息都是和本地工作拷貝(Working Copy)一致的。svn info命令不單可以用于顯示目錄的信息,對于文件同樣也可以。而對于svnlook info命令,依然要記得的兩點是: A.只能使用本地路徑形式作為svnlook info命令的參數(shù),不能使用URL B.可以使用PATH_IN_REPOS來限制只顯示父路徑下某個子路徑的信息 【7】查看項目的實時狀態(tài)信息 到目前為止,我們的ECoupon項目還是一個空的目錄,下面我們將為它添加若干內(nèi)容:doc目錄、src目錄、WebRoot目錄。手工拷貝這三個目錄到E:\Temp\ECoupon目錄下。既然我們的項目已經(jīng)加入了版本控制功能,那么現(xiàn)在我們的項目有了新的資源,SVN如何得知這種改變呢?或者說其他人如何知道呢? 還是回到我們的《SVN In Action (1)》系列的第2節(jié)--訪問版本庫,可以看到在那個命令列表的最后一列上邊有一個:svn status命令。對了!就是這個命令。 svn status:顯示本地工作拷貝和目錄的狀態(tài)信息 請注意的一點就是和svn list、svn info不同,svn status只能使用本地路徑作為參數(shù),也就是說你不能使用諸如:svn status http://...這樣的命令。 svn status命令可以搭配不同的參數(shù)來顯示不同的信息: A.如果不加任何參數(shù),將顯示所有本地修改的條目狀態(tài)信息 B.如果配合--show-updates參數(shù),將額外顯示所有本地out-of-date的條目信息 C.如果配合--verbose參數(shù),將顯示詳盡的狀態(tài)信息,包括所有沒有改變的條目 D.如何配合--quiet參數(shù),將只顯示所有本地修改的條目的簡介信息 和svn info命令相同,svn status會輸出一大堆的內(nèi)容。svn status的輸出中,需要特別注意的是每一行的前6個字符,它們分別表示了6種不同的信息。現(xiàn)在我們需要關(guān)注的是前3個 A.列1:顯示該條目是屬于新增(A)、修改(M)、還是被刪除(D)或者其它的改變 B.列2:顯示該條目(文件、目錄)屬性的狀態(tài) C.列3:顯示該條目是否處于“鎖定”狀態(tài)(L) 現(xiàn)在我們來執(zhí)行一下svn status命令 C:\>svn status E:\Temp\ECoupon ? E:\Temp\ECoupon\WebRoot ? E:\Temp\ECoupon\doc ? E:\Temp\ECoupon\src 很明顯地我們看到在新增加的三個目錄前面都有一個?,這說這三個目錄都還沒有加入版本控制。如果需要再詳細(xì)地輸出,只需要添加:--verbose參數(shù) C:\>svn status E:\Temp\ECoupon --verbose 5 4 qlinpen E:\Temp\ECoupon ? E:\Temp\ECoupon\WebRoot ? E:\Temp\ECoupon\doc ? E:\Temp\ECoupon\src 5 4 qlinpen E:\Temp\ECoupon\my_VPN.txt 如果我們想查看除了本地修改之外,版本庫中是不是有新的修改出現(xiàn),而我們尚未同步到本地工作拷貝的,只需要添加:--show-updates參數(shù) C:\>svn status E:\Temp\ECoupon --verbose --show-updates ? E:\Temp\ECoupon\doc 5 4 qlinpen E:\Temp\ECoupon\my_VPN.txt ? E:\Temp\ECoupon\src ? E:\Temp\ECoupon\WebRoot 5 4 qlinpen E:\Temp\ECoupon Status against revision: 5 可以看到和上一個命令執(zhí)行結(jié)果相比,多出了一句話“Status against revision: 5 ”。這是因為: A.當(dāng)svn status命令不帶任何參數(shù)或只帶除了--show-updates外的其他參數(shù)時,并不訪問版本庫。而是和本地的.svn目錄比較 B.當(dāng)svn status命令搭配--show-updates參數(shù)后,將會訪問版本庫。 我們可以看到ECoupon目錄和my_VPN.txt文件都是在版本號為4的時候創(chuàng)建的,當(dāng)前版本號是5。 ------------------------------------------------------------- 生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
可以看到雖然同樣都是info子命令,但是兩者的執(zhí)行結(jié)果完全不同。實際上他們的輸出主要包括 A.svn info:顯示本地或遠(yuǎn)程條目(Item)指定版本的信息 B.svnlook info:顯示指定版本的條目(Item)的作者、時間戳、日志大小、日志內(nèi)容 對于svn info,它可以顯示的內(nèi)容非常多,有: •Path •Name •URL •RepositoryRoot •RepositoryUUID •Revision •NodeKind •LastChangedAuthor •LastChangedRevision •LastChangedDate •LockToken •LockOwner •LockCreated(date) •LockExpires(date) 除此之外還有一些額外的選項。可以看到svn info命令比svnlook info命令好用多了!實際上svn info命令不單可以用于顯示本地條目信息,也可以用于顯示遠(yuǎn)程(版本庫)條目的信息: