Как проверить только часть внешних файлов в svn-репо?
У меня есть svn repo, и где-то есть некоторые внешние ссылки на некоторые папки в одном и том же репо. когда я проверяю эту папку, содержащую внешние, svn также извлекает внешние элементы, но я понял, что для фактической фазы нужны только некоторые из них.
Я знаю, что выполнение svn co urlA myFolder --depth empty
, а затем 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
. Больше, я хотел бы только некоторые файлы в ext. Является ли это возможным? Я что-то упускаю? Может кто-нибудь помочь мне, пожалуйста?
Ответы
Ответ 1
После некоторых исследований я выяснил, как заставить его работать. Я сделал bash script, который проверяет только нужные файлы:
#!/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