【8】添加新的内容到版本控制 在上一节中我向E:\Temp\ECoupon添加了三个目录:doc、src、WebRoot,但是目前他们还没有被加入到版本控制中。SVN提供了svn add命令来帮我们把资源加入到版本控制中。执行如下命令: 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表示新增内容。默认情况下如果svn add 的对象是一个目录,则目录下的所有内容都会被加入版本控制。如果我们不想这样做,而是只添加目录(通常情况下发生在日志目录下)。我们在执行svn add 命令的时候加上参数--non-recursive(-N)。 此时再执行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 关于svn add命令我们有2个需要注意的地方: A.和svn status命令一样,svn add命令只能使用PATH,而不能使用URL作为参数 B.当svn add命令执行完毕后,相关资源并不会马上立即被加入版本控制中,需要再执行一次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】更新本地工作副本 在团队合作的项目,经常是几个人分别维护不同的部分。为了保证自己的代码始终是最新的,我们需要经常执行更新操作---把版本库的最新内容同步更新到本地。在SVN中可以通过svn update命令来达到目的。 现在我们已经把新的资源添加到版本库了,那是不是代表现在我们本地的工作拷贝就是最新版本的了呢? 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的操作由我们发出,但如果我们不主动从版本库更新,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 ------------------------------------------------------------- 生活就像打牌,不是要抓一手好牌,而是要尽力打好一手烂牌。