SVN签出部分文件
需要解决的问题
如下图所示,svn项目的trunk目录下有很多的文件夹。由于一个组或者部门共享一个trunk,建立代码结构之初,没有考虑按业务划分,或者业务之间有关联,导致这些文件夹所代表的代码可能不是同时属于一个业务,或者一个业务相关的代码分散在不同的文件夹之中。 比如:文件夹Floder_[1,2,3,4]属于同一个业务Prj_A,Floder_[5,6,7]属于业务Prj_B,而Floder_[1-7]在trunk下是同等层次的目录。当前我只想查看Prj_A的相关代码,如果我把trunk都签出,固然是一种解决方法,但考虑到根目录trunk的大小,不想同时把Prj_B和其他业务的代码同时签出。所以我需要一个方法从一个大trunk目录下有区别性的签出部分代码,这些签出的代码组成本地的一个版本库,这些代码受该版本库统一管理。
解决方法
在明确问题之后,用下面的方法签出代码来管理。以需要同时签出“svn://www.oksvn.com/oweb/cgi”和“svn://www.oksvn.com/oweb/cpp”为例。 第一步:我先签出“svn://www.oksvn.com/oweb”这个大的目录,请注意下图“Checkout Depth”选项的值。我选择的是“Only this item”,也就是说我只签出该文件夹,但不签出该文件夹下的任何子文件或者子文件夹。
这里顺带说下“Checkout Depth”各选项值所代表的含义: Fully recursive :签出该文件夹下全部的元素; Immediate children,including folders:把当前文件夹下的子文件及子文件夹都签出,但签出的子文件夹是空的,子文件夹下的文件是不会签出的; Only this item :只把当前文件夹签出,其中为空,不包含任何子文件及子文件夹; Only file children:只把当前文件夹下的直接子文件签出,其下的子文件夹(及其子文件)不签出;
第二步:在签出的本地版本库文件中,使用SVN客户端的“Repo-brower”功能浏览版本库,然后在左侧的目录树中找到“cgi”文件夹,然后在其上点击右键,弹出菜单栏后,在菜单栏中使用“Checkout”功能。
如上图所示,我们已经把“cgi”这个文件夹单独签出到本地版本库。再使用同样的方法我们把“cpp”签出。
第三步:自此“cgi”和“cpp”两个文件夹就放在一个版本库中了,我们在当前的版本库中,使用“Update”或者“Commit”等命令可以同时对当前的两个文件夹起效。