[SVN仅检出来自多个目录的中继线

问题描述 投票:1回答:2

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

我也正在做一个庞大的旧项目,我需要检查几个项目。

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

我如何在不提取分支和标签的情况下签出多个项目的单个父目录?

svn tortoisesvn
2个回答
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%正确,但我认为是。


0
投票

我出于类似目的编写了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或本地工作副本文件夹一起使用。它不处理第二个参数来设置本地工作副本文件夹的名称,但是很容易添加...

© www.soinside.com 2019 - 2024. All rights reserved.