svn小技巧——处理复杂目录结构

工作中,遇到这样的情况:

一个svn项目目录下,存在多个子目录,比如:https://svn-root/team-root/project-A,下面包含A-1, A-2, ... , A-n多个目录。整个项目checkout可以使用:

svn co https://svn-root/team-root/project-A

但是,如果真的执行这一操作,会耗费很多时间和磁盘空间,不合算

平常情况下,如果只有一个子目录的修改,可以选择只checkout相应的子目录,如:

svn co https://svn-root/team-root/project-A/A-2

commit的操作在对应的子目录下进行

但是,如果遇到需要同时修改多个子目录,比如A-2, A-5的情况,就会发现,单独checkout两个子目录的方法不支持直接在项目目录下commit

svn co https://svn-root/team-root/project-A/A-2
svn co https://svn-root/team-root/project-A/A-5
[%some edit here%]
svn ci A-2 A-5

得到的错误是

'.' is not a working copy

说是当前目录并非工作目录,那是很自然的,因为没有checkout project-A,那有没有办法能够不checkout庞大的project-A来完成这次修改呢,答案是有的

svn co https://svn-root/team-root/project-A --depth empty
svn up A-2 A-5

选用checkout的depth empty选项,可以得到svn控制的目录,但是不checkout实际的文件,然后结合svn up,可以做到选择性的checkout目录

这样的话,既实现了同时ci的需求,又可以节省时间空间,问题解决:)

原文地址:https://www.cnblogs.com/alexxyjiang/p/3054847.html