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 (может быть доступен и в некоторых старых версиях):

  • Проверка SVN → Выберите URL-адрес репозитория

  • Нажмите "Оформить заказ" (под надписью Depth Depth) и выберите только требуемые папки!

Ответ 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 необязательно ссылаться на другой репозиторий. Это может быть ссылка на другую папку в том же репо.