Есть ли способ заблокировать файлы, сохраняемые в SVN - PullRequest
12 голосов
/ 06 января 2009

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

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

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

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

Ответы [ 8 ]

17 голосов
/ 06 января 2009

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

svn propset svn:ignore '*.user' .

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

3 голосов
/ 06 января 2009

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

2 голосов
/ 12 сентября 2010

Я должен был использовать

svn propset svn:ignore '*.user' .

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

2 голосов
/ 23 августа 2010

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

Будет ли это на самом деле держать его от явно $ svn add'ed? - sirlancelot 6 января 2009 года в 18: 14

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

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

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

1 голос
/ 06 января 2009

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

0 голосов
/ 06 января 2009

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

0 голосов
/ 06 января 2009

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

0 голосов
/ 06 января 2009

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

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

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