Что не так с моим шаблоном svn:ignore?

У меня есть шаблон svn:ignore datasheets/*/*.pdf
Предполагается, что он игнорирует все PDF-файлы, которые находятся на произвольной глубине в нескольких каталогах «datasheet» в текущей корневой папке.

В качестве примера: скажем, у меня есть такая структура dir

Websites
  -web1
    -dataSheets
      -AT
        -ignore.pdf
      -BE
         -NL
          -ignore.pdf
         -FR
          -ignore.pdf
          -ignore2.pdf
    -licenseAgreements
      -important.pdf
  -web2
    -datasheets
      -etc

В этом примере шаблон должен игнорировать все ignore.pdf без учета важного.pdf.

Показанный шаблон по-прежнему включает все мои файлы PDF.

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


person Boris Callens    schedule 29.10.2009    source источник
comment
Пожалуйста, добавьте (к вопросу, а не в качестве комментария) вывод некоторых команд svn, которые указывают, как шаблон терпит неудачу. Например. svn, до и после изменения некоторых PDF:s.   -  person unwind    schedule 29.10.2009
comment
Я не совсем понимаю, что вы имеете в виду. Я добавил показанный шаблон в свойства рута, добавленные pdf файлы в любой из нижних каталогов не игнорируются   -  person Boris Callens    schedule 29.10.2009


Ответы (4)


Из документации:

[В] отличие от параметра global-ignores шаблоны, найденные в свойстве svn:ignore, применяются только к каталогу, для которого установлено это свойство, а не к любому из его подкаталогов.

Вам нужно применить шаблон игнорирования к каждому каталогу рекурсивно, что вы можете сделать с помощью опции --recursive.

person Michael Hackner    schedule 29.10.2009
comment
к сожалению, приведенный пример не соответствует реальной ситуации. В моем реальном случае есть много папок с таблицами данных, и папки будут приходить и уходить. Применять его каждый раз было бы работой сумасшедшего - person Boris Callens; 29.10.2009

Вы должны использовать встроенную функцию global-ignores. игнорирование свойств svn будет работать только на одном уровне, и да, вам придется изменить их или добавить заново, если будут добавлены новые папки.

Поэтому используйте клиентскую функцию global-ignores, которую можно найти в вашей локальной конфигурации [около строки 94, ищите «global-ignores].

Локальную конфигурацию можно найти в разделе:

окна:

%APPDATA%\subversion\config  

*никс

~/.subversion/config
person Peter Parker    schedule 29.10.2009
comment
Он не хочет игнорировать все PDF-файлы, только большинство из них. - person Michael Hackner; 29.10.2009
comment
Я думал, что он хочет игнорировать все PDF-файлы с определенным именем файла, но не игнорировать другие имена файлов. - person Peter Parker; 29.10.2009

svn:ignore работает только с установленным каталогом. Чтобы игнорировать файлы в подкаталогах, вы должны применить это свойство рекурсивно к подкаталогам. (переключатель -R).

Пожалуйста, попробуйте это:

svn propset svn:ignore "*pdf" -R datasheets
person greg    schedule 29.10.2009
comment
он все еще добавляет все PDF-файлы: S - person Boris Callens; 29.10.2009

Я на 80% уверен, что вы не можете делать то, что хотите, из коробки. Посмотрите на ловушку после фиксации — вы можете оценить путь к добавляемому файлу и отклонить его, если он соответствует указанным вами критериям.

person Coderer    schedule 23.04.2010