Как заставить SVN игнорировать файлы Mac "._"? - PullRequest
8 голосов
/ 28 февраля 2011

К моему серверу разработки обращаются несколько пользователей OSX, и их ОС обычно оставляет много ненужных файлов по всему месту, все начинаются с подчеркивания точки ("._").Я знаю, что OSX можно сказать не создавать их на сетевых дисках, но они все еще незаметны. Я бы хотел, чтобы SVN игнорировал все, что начинается с "._", но я не могу заставить его работать, даже еслипохоже, все должно быть просто.Я добавил «._*» в шаблон глобального игнорирования SVN, но SVN все еще пытается добавить и зафиксировать эти файлы.Может кто-нибудь сказать мне, что я делаю не так?Мой полный шаблон игнорирования SVN:

global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo *.rej *~ #*# .#* .*.swp .DS_Store Thumbs.db ._* *.bak *.tmp nbproject

Я не знаю, имеет ли это какое-то значение, но я пытаюсь установить это как на Ubuntu, так и на сервере Ubuntu, отредактировав / etc / subversion / configфайл.

Ответы [ 6 ]

11 голосов
/ 03 марта 2011

У меня есть хук предварительной фиксации , который может соответствовать всем требованиям.Этот хук позволяет вам полностью запретить использование определенных имен файлов на основе регулярного выражения.Вы можете заблокировать любой файл, который начинается с «._», и если кто-то попытается добавить его, он не сможет его зафиксировать.

После нескольких отклоненных коммитов из-за наличия файлов «._»,разработчики обновят свои global-ignores, чтобы включить эти файлы.

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

Работает по тому же принципу, что электрические розетки не позволяют пользователям вставлять вилки в них.После третьего или четвертого раза даже самые упрямые разработчики узнают, что это плохая идея.

3 голосов
/ 08 марта 2011

Вы также можете использовать установить свойство svn: ignore и добавить к нему «._ *» и другие требуемые значения.Тогда значения игнорирования находятся в репозитории и каждой рабочей копии, а не в машинной конфигурации.Однако и svn: ignore, и глобальный список игнорирования можно обойти.

Убедитесь, что форма «svn add», которую вы используете, уважает svn: ignore и глобальный список игнорирования.

Здесьявляется выдержкой из svn docs (добавлен акцент):

Даже если установлен svn: ignore, вы можете столкнуться с проблемами, если будете использовать подстановочные знаки оболочки вкоманда .Подстановочные знаки оболочки раскладываются в явный список целей до того, как Subversion работает с ними, поэтому запуск svn SUBCOMMAND * аналогичен запуску svn SUBCOMMAND file1 file2 file3….В случае команды svn add это имеет эффект, аналогичный передаче опции --no-ignore.Поэтому вместо использования подстановочного знака используйте svn add --force.сделать массовое планирование неверсионных вещей для добавления.Явная цель гарантирует, что текущий каталог не будет пропущен из-за того, что он уже находится под контролем версий, а опция --force заставит Subversion сканировать этот каталог, добавляя неверсионные файлы, в то же время соблюдая свойство svn: ignore и global-игнорирует переменную конфигурации времени выполнения.Не забудьте также указать параметр --depth files для команды svn add, если вы не хотите полностью рекурсивного сканирования для добавляемых объектов.

Как проверить, работает ли ваш список игнорирования

svn status

Если он не отображается и не является версионным, то он должным образом игнорируется.

Запрещает правильное игнорирование и всегда использует add соответствующим образом, хук предварительной фиксации, такой как @DavidУ. упомянуто может быть последней / единственной общей защитой ...

1 голос
/ 06 марта 2011

Subversion использует функцию fnmatch () для игнорирования.Поэтому вы должны использовать сопоставление с образцом этой функции.

Раздел игнорирования, который вы опубликовали, должен работать.Вы уверены, что устанавливаете его в правильном файле конфигурации?Есть несколько мест , из которых svn читает их.

В Unix-подобных системах эта область отображается как каталог с именем .subversion в домашнем каталоге пользователя.В дополнение к индивидуальной области конфигурации Subversion также распознает существование общесистемной области конфигурации.[..] На Unix-подобных платформах общесистемной областью конфигурации будет каталог / etc / subversion;

0 голосов
/ 03 марта 2011

Не могли бы вы создать ловушку на стороне клиента для рекурсивного удаления файлов ._ *?

У меня есть псевдоним в моей оболочке bash для удаления всех папок .DS_Store, поэтому я должен подключиться к Subversion.заглянуть в ...

0 голосов
/ 02 марта 2011

Получение.(см. документацию Subversion о том, как это сделать с сервера samba), затем шаблон игнорирования (установленный на каждой машине) не позволит им добавлять.Другими словами, эти файлы будут «оставаться на своей машине».

0 голосов
/ 02 марта 2011

Разве добавление файлов в SVN не является локальной операцией? В этом случае пользовательские настройки должны игнорировать файлы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...