Есть ли способ заблокировать файлы, которые будут переданы в репозиторий 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", чтобы сделать это глобально. Следуйте ссылкам для получения дополнительной информации. Я думаю, что функция глобального игнорирования - это то, что вы можете искать.