file1.txt
file2.txt
file3.txt
dir1/
dir2/
dir3/
dir4/
:
dirXX/
现在您需要文件和一些目录,但不是全部。这可以通过SVN完成。只需使检出非递归即可:
svn checkout -N <URL>
这只检查第一个目录和其中的文件。不包括子目录。即使您进入检出目录并运行 "svn up
",它也只会更新先前检出的文件,而不会添加目录。现在,您可以通过显式更新所需的目录来有选择性地添加这些目录。例如,如果您只需要 dir2 和 dir4,则可以进入检出目录并执行以下操作:
svn up dir2
svn up dir4
如果您将来运行通用的“
svn up
”,它只会更新文件和这两个目录,不会添加任何其他目录。现在问题来了:如果我决定在以后的任何时候不再需要dir2怎么办?我该如何摆脱它?似乎没有其他方法可以做到这一点,除非删除整个checkout并从头开始。
当您只删除dir2时,下一个“
svn up
”将把它带回来,因为“svn status
”当然显示它现在已经丢失(名称前面有“!”)。运行“svn remove
”当然会将其删除,但在下一次提交时,它也会从存储库中删除,这是不允许的。即使是SVN 1.5的新稀疏目录(“浅层checkout”)功能,在这里也没有用:
引用:
Subversion 1.5实现的浅层检出很好,但不支持一些有趣的行为。首先,您无法取消工作副本项的望远镜效果。在无限深度的工作副本中运行svn update --set-depth empty将不会放弃除最顶层目录之外的所有内容 - 它只会出错。
- http://svnbook.red-bean.com/en/1.5/svn.advanced.sparsedirs.html 这在SVN上完全不可能吗?有人想出了一个聪明的解决方法吗?
只需创建结帐目录(不使用SVN),然后直接从存储库检出各个子目录作为此目录的子目录,即可用于目录:现在每个目录都是自己的结帐,可以更新,并且一旦不再需要,您可以将其删除。但是,那么我如何获取文件(例如file1.txt)? SVN不允许检出单个文件,您只能检出整个目录。