svn checkout https://svn.com/svn/project
该操作从svn服务器上拉代码下来,并且建立本地和远端的文件对应,状态的关联。
1,和export的区别
svn检出操作,和export不同的是:checkout会有.svn文件,和svn server端是关联的;而export只下载文件,没有.svn文件,和svn server端没有关系,本地修改不会有状态标识。
2,检出部分目录
关键参数控制:--depth
--depth ARG : limit operation by depth ARG ('empty', 'files','immediates', or 'infinity')
--set-depth ARG : set new working copy depth to ARG ('exclude','empty', 'files', 'immediates', or 'infinity')
empty:不检出项目的任何文件;
files没用过;
immediates:目录的第一级;
infinity:整个目录所有文件
案例:
一个项目有很多的tags,很多的branches,一个trunk。好多时候不用关心所有tags,branches,但是会关心branches(tags)下面的第一级目录。
需求A:检出整个项目,包含branches,tags,trunk目录,branches/tags包含第一级目录,trunk包含全部的代码
操作1:svn checkout https://svn.com/svn/project --depth=immediates
定位到project目录
操作2:svn checkout https://svn.com/svn/project/trunk --depth=infinity
操作3:svn checkout https://svn.com/svn/project/branches --depth=immediates
操作4:svn checkout https://svn.com/svn/project/tags --depth=immediates
注意,这个时候会有个问题,如果分支太多,而我们只关心某几个,我们希望删除其它无用分支。
操作3的后续操作:1,删除当前所有或者其中几个目录,rm -rf ./*;2,查看当前所有分支,svn list;3,更新需要的分支,svn update myBranch;
需求B:检出某个branches版本
操作:cd project/branches; svn checkout https://svn.com/svn/project/branches/branch1 --depth=infinity