Вопрос

Могу ли я игнорировать папку в svn checkout?Мне нужно игнорировать папку DOCs при оформлении заказа на моем сервере сборки.

Редактировать: Игнорировать внешние данные - это не вариант.У меня есть кое-какие внешние данные, которые мне нужны.

Это было полезно?

Решение

Вы не можете напрямую игнорировать папки при извлечении, но вы можете использовать разреженные извлечения в 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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top