SVN checkout игнорировать папку - PullRequest
       20

SVN checkout игнорировать папку

96 голосов
/ 10 октября 2008

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

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

Ответы [ 10 ]

101 голосов
/ 20 октября 2008

Вы не можете напрямую игнорировать папки при оформлении заказа, но вы можете использовать разреженные проверки в 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
76 голосов
/ 09 декабря 2011

Да, вы можете использовать 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.

Tom

9 голосов
/ 20 октября 2008

В версиях, предшествующих 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.

5 голосов
/ 31 августа 2012

Это в клиенте TortoiseSVN 1.7.1 (может быть доступно и в некоторых более старых версиях):

  • SVN checkout -> Выбрать URL хранилища

  • Нажмите «Пункты оформления заказа» (в разделе «Глубина оформления заказа») и выберите только папки требуются!

4 голосов
/ 10 октября 2008

Вы можете поместить папку docs во внешний репозиторий и затем использовать svn checkout --ignore-externals.

4 голосов
/ 10 октября 2008

Да, Subversion 1.5 имеет функцию под названием Разреженные проверки , которая может делать именно такие вещи.

3 голосов
/ 12 августа 2014

Я нашел этот вопрос, ища способ проверить источники 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.

2 голосов
/ 20 декабря 2010

Я недавно решил ту же задачу. Идея состоит в том, чтобы получить немедленный список папок / файлов в хранилище, исключить нужные вам записи, затем проверить оставшиеся папки и обновить файлы, если они есть. Вот решение:

    # 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 и исключите шаблон. Запустите команду.

Спасибо

1 голос
/ 13 октября 2008

Как уже упоминали несколько других, вы можете просто использовать свойства svn: externals и затем параметр --ignore-externals при оформлении заказа. Однако следует отметить, что svn: externals не обязательно должен ссылаться на другой репозиторий. Это может быть ссылка на какую-то другую папку в том же репо.

1 голос
/ 10 октября 2008

Нет, игнорировать только для добавления файлов.
Вы можете использовать редкие проверки (если вы используете SVN 1.5)

...