签出完整的Subversion树,不包括标签/和分支/

0xb*_*7ed 3 svn bash version-control branch cmd

我正在开发一个包含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/
            ...
Run Code Online (Sandbox Code Playgroud)

我需要检查trunk/所有项目的版本,但不幸的是,该命令$ svn co protocol://path/to/repo/root/检查完整版本的标签和分支,留下了数以千计的冗余源树,并永远.

此外,这N是一个非常大的数字,我不可能单独进入并检查每个项目的行李箱.

是否有一个svn命令,使我跳过tags/branches/树木?

我找到了一个博客,解释了如何使用SVNKit编写Java程序来完成此任务,但我希望我可以使用命令行中的单行程来完成它.

更新:svn首选只使用可执行文件的解决方案,但是如果需要一些shell脚本,我更喜欢Windows批处理脚本,否则,任何bashzsh脚本都会...

Tob*_*ght 7

你需要的是SVN稀疏目录.

你需要一个骨架结构,trunk当你到达它们时只填写s.像(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
Run Code Online (Sandbox Code Playgroud)

我假设有问题的目录都没有包含空格或shell元字符 - 必要时添加适当的引用.

当使用稀疏目录时要小心 - 很容易忘记被排除的内容和实际不存在的内容......