我正在处理包含 100 个 Maven 子项目的公司源代码树。由于每个子项目都有自己的 branches/
和 tags/
子文件夹布局,因此整个树的布局如下所示:
root/
some/intermediate/dirs/
project1/
branches/
...
tags/
...
trunk/
...
project2/
branches/
...
tags/
...
trunk/
...
...
projectN/
branches/
...
tags/
...
trunk/
...
other/intermediate/dirs/
projectN+1/
...
我需要检查所有项目的 trunk/
版本,但不幸的是,命令 $ svn co protocol://path/to/repo/root/
检查标签和分支的完整版本给我留下了数以千计的冗余源代码树并占用了永远。
而且,N
是一个很大的数字,要我一个一个地进去查看每个项目的主干是不切实际的。
是否有一个 svn
命令可以让我跳过 tags/
和 branches/
树?
我找到了 a blog that explains how to write a Java program to accomplish this using the SVNKit但我希望我可以使用命令行中的一行代码完成它。
更新:首选仅使用 svn
可执行文件的解决方案,但如果需要一些 shell 脚本,我更喜欢 Windows 批处理脚本,否则,任何bash
或 zsh
脚本可以...
最佳答案
你需要的是SVN sparse directories .
您将需要一个骨架结构,并在到达它们时仅填充主干
。类似于(Bourne shell 语法):
svn co --depth empty protocol://path/to/repo/root/
for in in some intermediate dirs; do svn up --set-depth empty $i; cd $i; done
svn up --depth immediates .
for i in *; do svn up --depth infinity $i/trunk; done
我假设所有有问题的目录都不包含空格或 shell 元字符 - 如有必要,添加适当的引号。
使用稀疏目录时要当心 - 很容易忘记排除的内容和实际不存在的内容...
关于bash - 检查一个完整的 Subversion 树,不包括标签/和分支/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30580501/