Является ли svn:ignore полностью эквивалентным .gitignore?

В git любой пользователь может изменить .gitignore, перечислить шаблоны, которые нужно игнорировать, а затем фактически зафиксировать gitignore, чтобы он распространялся на других пользователей при их перебазировании.

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

Я подозреваю, что список игнорирования в svn управляется администратором на уровне репозитория и не может распространяться обычным пользователем, как в git, с использованием gitignore, что более «демократично» из-за отсутствия лучшего термина.


person amphibient    schedule 22.08.2016    source источник


Ответы (1)


svn:ignore — это свойство, а не файл.

Это основное различие между ними в двух системах, и у них есть тонкие побочные эффекты из-за этого фундаментального разрыва.

Свойства в SVN могут быть прикреплены ко многим вещам, поэтому svn:ignore обычно выполняется в одном каталоге для этого каталога. Это означает, что у вас может быть много директив svn:ignore.

.gitignore фактически то же самое, что и свойство svn, но это также файл.

Функционально они оба делают одно и то же, они предписывают клиенту перестать жаловаться на файлы, которые не будут зафиксированы. Тонкие различия есть в том, как они это делают, и в том, как они себя ведут.

person Edwin Buck    schedule 22.08.2016
comment
У меня нет git на этом ноутбуке, но я уверен, что вы можете иметь .gitignore в любом каталоге - person amphibient; 23.08.2016
comment
так вы говорите, что распространять игнорирование в svn по всей команде не так просто, как с gitignore? - person amphibient; 23.08.2016
comment
это эффективно рекурсивно в подкаталогах, но не выше по течению - person amphibient; 23.08.2016
comment
@amphibient Subverison имеет способы рекурсивного добавления свойств в каталог (или даже в целый репозиторий). Но да, если вы не укажете рекурсивные параметры, вы, скорее всего, будете игнорировать только элементы в каталоге, к которому привязано свойство. - person Edwin Buck; 23.08.2016
comment
мой вопрос был другим. я просил подтвердить, игнорирует ли распространение других членов команды, просто добавляя их в файл, который регистрируется, не так просто в svn, как в git через gitignore? я понимаю, что могу манипулировать своими игнорами, но мой вопрос был связан с тем, чтобы поделиться им с командой - person amphibient; 23.08.2016
comment
@amphibient Быстрая проверка показывает, что файлы .gitignore в каталогах более низкого уровня действительно подавляют файлы в этих каталогах более низкого уровня. - person Edwin Buck; 23.08.2016
comment
@amphibient SVN обрабатывает игнорирование по-разному. Если вы хотите, чтобы они были в файле, это нормально, но SVN не будет их игнорировать, потому что она не так их обрабатывает. Они находятся в собственности, прикрепленной к каталогу. Таким образом, вы в основном добавляете что-то (свойство) в каталог со списком игнорируемых элементов. Когда они извлекают каталог, они также получают проигнорированные элементы, не отображая файл. Это также то, как SVN обрабатывает исполняемые биты, MIME-типы и другие разрешения. Если бы svn делал это с файлами, у вас были бы .svnpermissions, .svnexecutable, .svnignore и т. д. - person Edwin Buck; 23.08.2016
comment
да, но я не получаю ответа, можно ли поделиться с командой или нет, как в git с помощью gitignore. - person amphibient; 23.08.2016
comment
@amphibient Да, если вы можете поделиться каталогом с командой, все атрибуты станут общими. Кроме того, ревизия атрибутов контролируется каталогом, поэтому обновления координируются с ревизией во всей команде. - person Edwin Buck; 23.08.2016
comment
Свойства являются общими. Поэтому, если вы добавите свойство svn:ignore в папку, чтобы сообщить (например), что *.log следует игнорировать, и если вы зафиксируете эту папку/свойство, то вся ваша команда будет игнорировать *.log в этой папке (если они иметь обновленную папку). - person YMomb; 23.08.2016