SVN仅从多个目录中检出中继

时间:2014-12-04 22:22:44

标签: svn tortoisesvn

我的问题类似于this问题,但我没有使用git。

我也正在研究一个庞大的遗留项目,我需要查看几个项目。

我想要检查所有项目的父目录。但是当我这样做时,它会为每个目录提取分支和标签以及主干。我只想要每个项目的主干。

如何在不拉动分支和标签的情况下查看多个项目的单个父目录?

2 个答案:

答案 0 :(得分:2)

使用Subversion的Sparse Directories功能获取基本目录结构,然后更新trunk目录的深度以充实它们。

svn checkout --depth immediates URL_TO_COMMON_PARENT LOCAL_DIR
svn update --set-depth infinity project1/trunk
svn update --set-depth infinity project2/trunk

为每个项目进行泡沫,冲洗,重复。

我现在远离svn存储库所以我没有证实这是100%正确的,但我认为是。

答案 1 :(得分:1)

出于类似的目的,我编写了一个bash脚本。我需要检查子项目中深度不均匀的大型项目中的主干。该脚本使用上面提到的稀疏目录功能alroc,并递归地遍历子项目,直到找到中继文件夹。然后以无穷大的深度检出树干。

#!/bin/bash

function svn_trunk()
{
    SUBDIRS=$(find "$1" -not -path '*/\.*' -not -path "$1" -type d)
    if [[ $SUBDIRS =~ "trunk" ]]; then
    svn up --set-depth infinity "$1/trunk"
    else
    for DIR in $SUBDIRS; do
        svn up --set-depth immediates "$DIR"
        svn_trunk "$DIR"
    done
    fi
}

if [ -d "$1" ]; then
    svn_trunk $1
else
    svn co --depth immediates "$1"
    svn_trunk .
fi

您可以将脚本与存储库URL或本地工作副本文件夹一起使用。它不处理第二个参数来设置本地工作副本文件夹的名称,但这很容易添加...