svn checkout操作

时间:2023-03-08 16:05:04

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