【8】添加新的內(nèi)容到版本控制 在上一節(jié)中我向E:\Temp\ECoupon添加了三個目錄:doc、src、WebRoot,但是目前他們還沒有被加入到版本控制中。SVN提供了svn add命令來幫我們把資源加入到版本控制中。執(zhí)行如下命令: c:\>svn add E:\Temp\doc E:\Temp\src E:\Temp\WebRoot 我們可以看到如下的輸出 A (bin) E:\Temp\ECoupon\doc\UML Diagram\ECoupon activity diagram.png A (bin) E:\Temp\ECoupon\doc\UML Diagram\ECoupon class assoication diagram.png A (bin) E:\Temp\ECoupon\doc\UML Diagram\ECoupon user case diagram.png A (bin) E:\Temp\ECoupon\doc\UML Diagram\ecoupon.umr A (bin) E:\Temp\ECoupon\doc\UML Diagram\WebPage flow.doc A E:\Temp\ECoupon\src A E:\Temp\ECoupon\src\applicationContext.xml A E:\Temp\ECoupon\src\com A E:\Temp\ECoupon\src\com\three 將會在終端看到很多輸出,其中A表示新增內(nèi)容。默認情況下如果svn add 的對象是一個目錄,則目錄下的所有內(nèi)容都會被加入版本控制。如果我們不想這樣做,而是只添加目錄(通常情況下發(fā)生在日志目錄下)。我們在執(zhí)行svn add 命令的時候加上參數(shù)--non-recursive(-N)。 此時再執(zhí)行svn status命令會如何呢? C:\>svn status E:\Temp\ECoupon\doc A E:\Temp\ECoupon\doc A E:\Temp\ECoupon\doc\Requirement A E:\Temp\ECoupon\doc\Requirement\ecoupon-requirement.txt A E:\Temp\ECoupon\doc\Requirement\ECoupon功能列表.xls A E:\Temp\ECoupon\doc\Requirement\tip.txt A E:\Temp\ECoupon\doc\UML Diagram A E:\Temp\ECoupon\doc\UML Diagram\ECoupon class assoication diagram.png A E:\Temp\ECoupon\doc\UML Diagram\WebPage flow.doc A E:\Temp\ECoupon\doc\UML Diagram\ecoupon.umr A E:\Temp\ECoupon\doc\UML Diagram\ECoupon user case diagram.png A E:\Temp\ECoupon\doc\UML Diagram\ECoupon activity diagram.png A E:\Temp\ECoupon\doc\CustomerClas 關(guān)于svn add命令我們有2個需要注意的地方: A.和svn status命令一樣,svn add命令只能使用PATH,而不能使用URL作為參數(shù) B.當(dāng)svn add命令執(zhí)行完畢后,相關(guān)資源并不會馬上立即被加入版本控制中,需要再執(zhí)行一次commit C:\>svn commit E:\Temp\ECoupon -m "add doc,src,webroot folder for project" 我們將可以看到如下類似輸出 Adding E:\Temp\ECoupon\src\com\three\hk\ecoupon\util\Pager.java Adding E:\Temp\ECoupon\src\com\three\hk\ecoupon\util\config.properties Adding E:\Temp\ECoupon\src\hibernate.cfg.xml Adding E:\Temp\ECoupon\src\log4j.properties Transmitting file data . . Committed revision 6. 【9】更新本地工作副本 在團隊合作的項目,經(jīng)常是幾個人分別維護不同的部分。為了保證自己的代碼始終是最新的,我們需要經(jīng)常執(zhí)行更新操作---把版本庫的最新內(nèi)容同步更新到本地。在SVN中可以通過svn update命令來達到目的。 現(xiàn)在我們已經(jīng)把新的資源添加到版本庫了,那是不是代表現(xià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:\>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: 6 Node Kind: directory Last Changed Author: qlinpen Last Changed Rev: 6 Last Changed Date: 2009-12-08 12:05:15 +0800 (星期二, 08 十二月 2009) 可以見到,我們本地工作副本的版本號依然是5,而不是6。這意味著雖然剛剛commit的操作由我們發(fā)出,但如果我們不主動從版本庫更新,SVN是不會在commit后主動更新本地工作副本的版本的。 我們需要在每次commit后立即update,已保證我們最新代碼被上傳到版本庫的同時,他人的最新代碼能夠被及時更新到本地 C:\>svn update E:\Temp\ECoupon At revision 6. 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: 6 ------------------------------------------------------------- 生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。