SVN checkout игнорировать папку
могу ли я игнорировать папку на svn checkout? Мне нужно игнорировать папку DOCs при проверке на моем сервере сборки.
edit: игнорировать внешние-не вариант. У меня есть некоторые внешние данные, которые мне нужны.
10 ответов:
вы не можете напрямую игнорировать папки при выписке, но вы можете использовать разреженные выписки в svn 1.5. Например:
$ svn co http://subversion/project/trunk my_checkout --depth immediates
это проверит файлы и каталоги из вашего Транка проекта в "my_checkout", но не рекурсивно в эти каталоги. Например:
$ cd my_checkout && ls bar/ baz foo xyzzy/
затем, чтобы получить содержимое " бар " вниз:
$ cd bar && svn update --set-depth infinity
Да, вы можете использовать SVN 1.6. Вам нужно будет сначала выполнить проверку, а затем пометить папку для исключения, а затем удалить ненужную папку.
svn checkout http://www.example.com/project cd project svn update --set-depth=exclude docs rm -fr docs
С этого момента любые обновления рабочей копии не будут повторно заполнять папку docs.
см.http://blogs.collab.net/subversion/2009/03/sparse-directories-now-with-exclusion/ и http://subversion.apache.org/docs/release-notes/1.6.html#sparse-directory-exclusion Подробнее подробности.
Тома
С версиями до 1.5 я обнаружил, что если вы проверяете только самую верхнюю папку, а затем выборочно обновляете, с тех пор обновления влияют только на то, что вы проверили. То есть.
svn co -N foo cd foo svn up -N bar svn up
флаг-N делает операцию нерекурсивной. Выше не будет проверять ничего другого на уровне foo, например. скажем есть папка
lala
, окончательный svn up не будет проверять эту папку, но она будет обновлятьсяbar
.но в более позднее время вы можете
svn up lala
и таким образом, добавьте его в кассу.предположительно, это также работает с 1.5.
Это в клиенте TortoiseSVN 1.7.1 (может быть доступно и в некоторых более старых версиях):
svn checkout -- > выберите URL репозитория
нажмите на "элементы оформления заказа" (в разделе глубина оформления заказа) и выберите только папки требуются!
вы можете поместить папку docs во внешний репозиторий, а затем использовать
svn checkout --ignore-externals
.
да Subversion 1.5 имеет функцию под названием разреженных извлечений это может сделать именно такие вещи.
Я нашел этот вопрос, ища способ проверить источники WebKit, исключая регрессионные тесты. В итоге я получил следующее:
svn checkout http://svn.webkit.org/repository/webkit/trunk WebKit \ --depth immediates cd WebKit find . \ -maxdepth 1 -type d \ -not -name '.*' \ -not -name '*Tests' \ -not -name 'Examples' \ -not -name 'Websites' \ | (while read SUBDIR; do svn update --set-depth infinity "$SUBDIR"; done)
Примечание Вы можете изменить исключения, как вы считаете нужным, но .* рекомендуется пропустить рабочий каталог (который уже обновлен) и все .каталоги svn.
недавно я решил ту же задачу. Идея состоит в том, чтобы получить немедленный список папок/файлов в репозитории, исключить необходимые записи, а затем проверить оставшиеся папки и обновить немедленные файлы, если таковые имеются. Вот решение:
# Path to the svn repository to be checked out rpath=https://svn-repo.company.com/sw/trunk/ && \ # This files are to be excluded (folders are ending with '/') # this is a regex pattern with OR ('|') between enties to be excluded excludep='docs_folder/tests_folder/|huge_folder/|file1|file2' && \ # Get list of the files/folders right under the repository path filtered=`svn ls $rpath | egrep -v $excludep` && \ # Get list of files out of filtered - they need to be 'uped' files=`echo $filtered | sed 's| |\n|g' | egrep '^.*[^/]$'` && \ # Get list of folders out of filtered - they need to be 'coed' folders=`echo $filtered | sed 's| |\n|g' | egrep '^.*[/]$'` && \ # Initial nonrecursive checkout of repository - just empty # to the current (./) working directory svn co $rpath ./ --depth empty && \ # Update the files svn up $files &&\ # Check out the all other folders finally. svn co `echo $folders | sed "s|\<|$rpath|g"`
изменения в исходный рабочий каталог. Скопируйте команды. Паста. Измените соответствующий URL-адрес и исключите шаблон. Выполнить команду.
спасибо,