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的需求,又可以节省时间空间,问题解决:)