在我工作的地方,我们有一些非常大的存储库。我使用 Subversion 的稀疏目录功能非常有优势。但是,我不知道为什么我似乎无法对存储库进行空(或稀疏)签出,然后一举递归地“添加”长路径的目录。比如说,我有一个名为“project1”的存储库,其布局如下:
foo/
bar/
baz/
brak/
schwing/yadda/etc/i386/package/
(请记住,这只是一个示例。真正的 repo 要复杂得多。)我希望(出于各种原因)让工作目录布局镜像 repo,除了我想省略一些路径,如“foo”和“bar/巴兹”完全。所以现在,我做这样的事情:
svn checkout --depth=empty svn+ssh://svn/project1 project1
cd project1
svn update --depth=empty bar
svn update --depth=empty bar/baz
svn update --depth=empty bar/baz/schwing
svn update --depth=empty bar/baz/schwing/yadda
svn update --depth=empty bar/baz/schwing/yadda/etc
svn update --depth=empty bar/baz/schwing/yadda/etc/i386
svn update --depth=infinity bar/baz/schwing/yadda/etc/i386/package
我是密集还是没有更短的方法可以做到这一点?我检查了 SVN 文档并在 Google 上搜索得很好。我想做的是这样的:
svn checkout --depth=empty svn+ssh://svn/project1 project1
svn update --depth=infinity bar/baz/schwing/yadda/etc/i386/package
这样“包”的所有父项都会自动添加到文件系统中(类似于“mkdir -p”),但除了路径中指定的子项之外,不会填充任何内容。当我尝试上面的命令时,SVN 甚至没有给出错误,它只是说路径被“跳过”并且检查工作目录显示没有发生任何事情。
我知道我可以编写一个 shell 函数来处理这个问题(并且可能会),但感觉应该有更好的方法。谢谢你的帮助。