SVN checkout игнорировать папку
Можно ли игнорировать папку в svn checkout? Мне нужно игнорировать папку DOCs при проверке на моем сервере сборки.
edit: Игнорировать внешние значения не является вариантом. У меня есть некоторые внешние ресурсы, которые мне нужны.
Ответы
Ответ 1
Вы не можете напрямую игнорировать папки в кассе, но вы можете использовать разреженные проверки в svn 1.5. Например:
$ svn co http://subversion/project/trunk my_checkout --depth immediates
Это проверяет файлы и каталоги из вашего проекта на "my_checkout", но не рекурсирует в эти каталоги. Например:
$ cd my_checkout && ls
bar/ baz foo xyzzy/
Затем, чтобы получить содержимое "bar" вниз:
$ cd bar && svn update --set-depth infinity
Ответ 2
Да, вы можете использовать SVN 1.6. Сначала вам нужно сделать чек, затем пометить папку для исключения, а затем удалить нежелательную папку.
svn checkout http://www.example.com/project
cd project
svn update --set-depth=exclude docs
rm -fr 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 для более подробная информация.
Tom
Ответ 3
С версиями до 1.5 я обнаружил, что если вы проверяете только самую верхнюю папку и затем выборочно обновляете, с тех пор обновления только влияют на то, что вы проверили. Т.е..
svn co -N foo
cd foo
svn up -N bar
svn up
Флаг -N делает операцию нерекурсивной. Вышеупомянутое не будет проверять что-либо еще на уровне foo, например. скажем, есть папка lala
, последняя svn up не будет проверять эту папку, но она обновит bar
.
Но позже вы можете svn up lala
и, таким образом, добавить его в checkout.
Предположительно это также работает с 1.5.
Ответ 4
Это клиент TortoiseSVN 1.7.1 (может быть доступен и в некоторых старых версиях):
Ответ 5
Да, Subversion 1.5 имеет функцию Редкие проверки, которые могут делать именно такие вещи.
Ответ 6
Вы можете поместить папку docs во внешний репозиторий, а затем использовать svn checkout --ignore-externals
.
Ответ 7
Я нашел этот вопрос в поиске способа проверить источники 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.
Ответ 8
Недавно я решил одну и ту же задачу.
Идея состоит в том, чтобы получить непосредственный список папок/файлов в репозитории, исключая нужные вам записи, а затем проверить оставшиеся папки и обновить сразу файлы, если они есть.
Вот решение:
# 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-адрес и исключите шаблон. Выполните команду.
Спасибо,
Ответ 9
Нет, игнорировать - только для добавления файлов.
Вы можете использовать разреженные проверки (если вы используете svn 1.5)
Ответ 10
Как уже упоминалось выше, вы можете использовать только свойства svn: externals, а затем - параметр -ignore-externals во время проверки. Однако следует отметить, что svn: externals необязательно ссылаться на другой репозиторий. Это может быть ссылка на другую папку в том же репо.