Блокировка ветки в perforce?

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

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

какие идеи?

5 ответов


Я делаю это все время как инженер-строитель. Я использую "P4 protect", чтобы ограничить доступ всех к деревьям только для чтения:

super group everyone * -//depot/project/branch/...
read group everyone * //depot/project/branch/...
super user me * //depot/project/branch/...

первая строка закрывает все разрешения для всех пользователей ветви (при условии, что группа " все " определена правильно.)

вторая строка устанавливает права на чтение для всех.

последняя строка восстанавливает все разрешения только у меня.


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

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

#152278 **
    'p4 protect' now allows specification of permission 'rights'.
    Previously, 'p4 protect' only allowed using permission levels 
    which include the specified access (ie 'read') and also all
    of its lesser permissions (ie 'read' = 'read' + 'list').
    Permission rights make it possible to deny individual rights
    without having to re-grant lesser rights.  The new 
    permission rights are '=read', '=branch', '=open',
    and '=write'. This functionality was previously undocumented,
    and is now fully supported for 2008.1

Если у вас действительно есть проблема с тем, чтобы быть администратором, чтобы заблокировать и разблокировать это, тогда вы должны взглянуть на функцию "владелец группы", представленную в 2007.3. Это позволит не супер пользователь должен иметь возможность добавлять и удалять людей из группы. Так совместите это с таблицей защит. Т. е. попросите администратора сайта настроить таблицу защиты и ограничить права на группу с именем "rel 1.0 authorized", а также сделать вас владельцем группы. Затем можно добавлять и удалять пользователей (или подгруппы) из этой группы для управления доступ.

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


как небольшое дополнение к одному из других ответов. Сначала настройте группу "все", в которой есть все пользователи. Затем добавьте это в P4 protect

write group everyone * -//depot/project/1.0/...
read group everyone * //depot/project/1.0/...
write group 1.0 * //depot/project/1.0/...

Это позволит вам создать группу "1.0", в который вы можете добавлять любых пользователей, которым разрешен доступ на запись.

Если вы используете server 2008.1, вы можете сделать это.

=write group everyone * -//depot/project/1.0/...
write group 1.0 * //depot/project/1.0/...

первая строка удаляет только доступ на запись (не чтение и список ) из группы everyone.


способ сделать это в modern Perforce-использовать потоки-именованные ветви, которые обновляются на месте в вашей локальной системе, и могут иметь разрешения, применяемые, чтобы побудить вас делать правильные вещи при слиянии и копировании между потоками.

вы можете дополнительно ограничить поток, чтобы только владелец потока мог зарегистрироваться (и вы можете заблокировать поток, чтобы никто, кроме владельца, не мог редактировать его свойства). Видеть http://www.perforce.com/perforce/doc.current/manuals/p4guide/chapter.codelines.html#codelines.streams


P4 protect, вероятно, правильный ответ для большинства людей, как объясняется в других ответах.

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