Есть ли способ заблокировать файлы, которые будут переданы в репозиторий SVN

Сегодня я столкнулся с проблемой, когда кто-то случайно передал файл proj.user в репозиторий SVN. Когда я пришел к обновлению, это, очевидно, вызвало проблемы.

Мне стало интересно, есть ли способ заблокировать определенные расширения файлов, которые будут переданы в репозиторий.

Я действительно понимаю, что есть список игнорирования, но насколько я знаю, это все равно полагается на человека, чтобы добавить файлы в список игнорирования. В идеале я хотел бы контролировать это централизованно, чтобы хранилище, а не человек, имели контроль.

Возможно ли это?

Ответ 1

Да, в общем, есть два пути. Либо создайте фиксации (которые, вероятно, не то, что вы хотите), либо, что проще, добавьте свойство svn: ignore в ваш каталог. Поскольку свойства поддерживаются вместе с проектом, это будет влиять на всех. Например, чтобы игнорировать файлы *.user, вы можете добавить это в каталог, где они появятся:

svn propset svn:ignore '*.user' .

Затем скопируйте свое изменение, как обычно. С этого момента файлы *.user в этом каталоге больше не будут участвовать в командах svn, таких как stat, update, commit и т.д. Однако вам нужно добавить свойство в каждую директорию, для которой требуется поле игнорирования. Он не будет автоматически действовать рекурсивно на вашем дереве проектов. Если по какой-либо причине вы хотите обновить проигнорированный файл, вы должны передать флаг --no-ignores в команду.

Ответ 2

Возможно, вы можете добавить крюк pre-commit для подрыва, чтобы люди не совершали их. Преимущество состоит в том, что серверная сторона, а не клиентская настройка.

Ответ 3

Относительно этого:

Будет ли это на самом деле явно $svn add'ed? - sirlancelot # 601 в 18:14

Нет, если вы его специально добавили, будут добавлены, но обновления к нему будут игнорировать. - Джейсон Коко 6 января 2009 года 20:08

Я считаю, что вы не можете играть с svn: игнорировать реквизиты. Согласно руководству svnbook 1.5:

"Поддержка Subversion для невежественных шаблоны файлов распространяются только на одноразовый процесс добавления неверсированного файлы и каталоги до версии контроль. Когда объект находится под Управление Subversion, игнорирование шаблонные механизмы больше не применяются к Это. Другими словами, не ожидайте Подрывная деятельность, чтобы избежать изменений вы сделали для файла с версией просто потому что это имя файла соответствует игнорировать шаблон-Subversion всегда уведомляет все его версии."

Ответ 4

Мне пришлось использовать

svn propset svn:ignore '*.user' .

Чтобы использовать принятый ответ выше.

Ответ 5

Вы хотите добавить на стороне сервера список игнорирования? Я думаю, что это невозможно, но вы можете анализировать файлы в пред-фиксации (см. http://svnbook.red-bean.com/en/1.1/ch05s02.html#svn-ch-5-sect-2.1) и полностью отказаться от фиксации если неправильное имя/шаблон?

Ответ 6

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

См. также Как удалить файл из управляемой версии без удаления файла в подрывной программе?

Ответ 7

Проверьте свойство svn: ignore.

Ответ 8

В дополнение к настройке игнорировать свойство вы также можете использовать " global-ignore", чтобы сделать это глобально. Следуйте ссылкам для получения дополнительной информации. Я думаю, что функция глобального игнорирования - это то, что вы можете искать.