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-адрес и исключите шаблон. Выполнить команду.
спасибо,
нет, не только для добавления файлов.
Вы можете использовать разреженные проверки (если вы используете svn 1.5)
Как упоминали некоторые другие, вы можете просто использовать свойства svn: externals, а затем параметр --ignore-externals при проверке. Однако следует отметить, что svn: externals делает не обязательно нужно обратиться к другой репозиторий. Это может быть ссылка на другую папку в том же РЕПО.