Можно ли настроить SVN для выдачи предупреждения при добавлении файла? - PullRequest
1 голос
/ 17 октября 2011

Сегодня я заметил, что неделю назад я случайно изменил файл, который не должен был делать, и зафиксировал его вместе с остальными. Это заставило меня задуматься, что было бы неплохо, если бы вы могли пометить некоторые файлы в SVN как «вы, вероятно, не хотите фиксировать этот». То есть, если я случайно изменю такой файл, то при коммите я получу предупреждающий вопрос: «Вы действительно уверены, что хотите зафиксировать этот файл?» Я не хочу полной блокировки, потому что могут быть редкие законные случаи касания этих файлов.

Можно ли это как-то настроить?

Ответы [ 4 ]

2 голосов
/ 17 октября 2011

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

Таким образом, каждый раз, когда вы пытаетесь зафиксировать файл, заблокированный notSoFast , вам будет запрещено это делать, если вам действительно нужно обновить этот файл, вы можете (а) зафиксировать этот файл как пользователь notSoFast или (b) снять блокировку с пользователя, зафиксировать изменения, а затем снова заблокировать файл с пользователем.

1 голос
/ 17 октября 2011

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

1 голос
/ 17 октября 2011

У меня есть два хука до фиксации , которые могут делать то, что вы хотите:

  • Первый - это то, что я называю крюком Kitchen Sink , потому что он делает много вещей. Вы можете указать, кому разрешено вносить изменения в определенные файлы. Например, вы можете установить эти файлы как только для чтения для большинства пользователей, но при этом разрешить отдельным пользователям вносить в них изменения при необходимости. Все это контролируется управляющим файлом, поэтому вам не нужно изменять сам скрипт.

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

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

В хуках используется Perl, но нет нестандартных модулей, поэтому нет необходимости загружать и устанавливать модули из CPAN, что может быть сложно для некоторых сайтов.

1 голос
/ 17 октября 2011

Второе, что сказал вам @mtrovo, вот еще один вариант, который гораздо сложнее реализовать:

TortoiseSVN позволяет вам (я думаю, начиная с версии 1.6.x) использовать клиентские сценарии подключения.Сценарии ловушек клиента вызываются аналогично серверной части, но на стороне клиента.Там вы можете добавить некоторую информацию в ваши файлы и, в зависимости от этой информации, добавить диалоговое окно, в котором вас спросят, уместно ли хранение информации.Чтобы получить работающее решение, вам необходимо выполнить следующие шаги:

  1. Добавить клиентский хук предварительной фиксации.Причиной предварительной фиксации является то, что список файлов доступен, а результат предварительной фиксации имеет значение true или false.Таким образом, вы можете отменить, если пользователь явно не разрешает фиксировать файлы.
  2. Добавить как svn: свойство к вашим файлам, которое должно быть проверено перед подтверждением пользователем.Вы можете назвать его, например, svn:needs-ok с некоторым значением.
  3. Каждый раз, когда вы хотите что-то зафиксировать, ваш скрипт будет проверять, что
    • , если файл имеет свойство svn:needs-commit,
    • запускается диалоговое окно с этой информацией, а кнопки OK и Cancel.
  4. В зависимости от ответа диалога сценарий возвращает значение true илиfalse.
  5. Вы должны убедиться, что
    • все клиенты установили хук предварительной фиксации клиента и
    • для всех файлов, которые необходимо проверить, установлено свойство svn:needs-ok.

Я не думаю, что это решение, которое работает достаточно хорошо, чтобы стоить раздражения: - (

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