如何在svn repo中查看外部文件的一部分?

时间:2017-01-04 15:28:37

标签: svn

我有一个svn repo,在某个地方,同一个仓库中的某些文件夹有一些外部。当我检查包含外部的文件夹时,svn也会获取外部,但我发现在实际阶段,只需要其中一部分。

我知道在svn co urlA myFolder --depth empty(我看过here了解svn up fileA fileB选项时,myFolder然后--depth仅执行这些文件)。但它似乎不适用于外部......

我已经这样做了(假设urlA有2个文件夹,一个是fld和ext,它有外部):

$ svn co urlA fldA --depth empty
   U   fldA
  Checked out revision 115
$ svn up --set-depth empty fld ext
  Updating 'fld':
  A    fld
  Updated to revision 115.
  Updating 'ext':
  A    External
  Updated to revision 115.
  Summary of updates:
  Updated 'fld' to r115.
  Updated 'ext' to r115.
$ svn up --set-depth immediates fld ext
  Updating 'fld':
  Restored 'fld'
  Restored 'fld/header.h'
  Restored 'fld/source.cpp'
  At revision 115.
  Updating 'ext':
  Restored 'ext'
  At revision 115.
  Summary of updates:
    Updated 'fld' to r115.
    Updated 'ext' to r115.

即使我使用propget之类的ext,更新也不会检查 $response = $this->render("MarketplaceBundle:sitemap:sitemap.xml.twig", array( 'urls' => $urls )); $response->headers->add(array('Content-Type' => 'application/xml')); return $response; 中的文件和文件夹。更多,我想在分机中只有一些文件。可能吗?有什么我错过了吗?请有人帮帮我吗?

1 个答案:

答案 0 :(得分:0)

经过一番研究,我找到了一种方法让它发挥作用。我做了一个bash脚本,只检查所需的文件:

#!/bin/bash

EXTERNALS=$(svn propget svn:externals .)

FILES=(header1.h source1.cpp header2.h source2.cpp header3.h header4.h source4.cpp)

IS_URL=true
for i in $EXTERNALS ; do
    echo "=========="
    if [ "$IS_URL" = true ] ; then
        URL=$i
        IS_URL=false
    else
        DIR=$i
        IS_URL=true
        svn co $URL $DIR --depth empty
        LIST=$(svn list $DIR)
        l2=" ${FILES[*]} "
        for item in ${LIST[@]}; do
            if [[ $l2 =~ " $item " ]] ; then
                svn up $DIR/$item
            fi
        done
        rm -rf $DIR/.svn
    fi
done

exit 0