Perforce — форматирование исходного кода с хуком предварительной фиксации

Я использую систему контроля версий Perforce (http://www.perforce.com/) и хочу форматировать файлы исходного кода (в основном XML), когда разработчики отправляют свои файлы в Perforce. Я знаю, что Git и SVN позволяют использовать обработчики скриптов, которые обеспечивают это.

Есть ли способ изменить файлы, которые отправляются в Perforce, с помощью какого-то хука? Как я могу сделать это в Perforce?

Спасибо!


person Avi Shefi    schedule 29.05.2014    source источник


Ответы (2)


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

То есть после отправки мой инструмент извлекает только что отправленные файлы, переформатирует их в соответствии с политикой, которую я применяю, и отправляет переформатированные файлы в качестве последующих. изменять.

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

Обычно у меня есть инструмент, выполняющий «revert -a» перед отправкой, так что, если файлы были отформатированы в соответствии с политикой исходного разработчика, повторная отправка не происходит.

Я действительно думаю, что это лучший подход, чем пытаться сделать это во время отправки:

  1. Отправляемое изменение точно такое, как его предоставил пользователь, с тем же содержимым, которое предоставил пользователь.
  2. Изменения, которые произошли из-за инструмента, хорошо видны в отдельной заявке, что позволяет очень легко распознать, когда инструмент сбился с пути и повредил файл во время его переформатирования (такие ошибки инструмента делают происходить).
  3. Чистый эффект, в целом, желаемый: файлы во главе ветки форматируются в соответствии с политикой компании.
person Bryan Pendleton    schedule 29.05.2014

триггер Perforce это что вам нужно.

person gareth_bowles    schedule 29.05.2014
comment
Я читал это, но триггер изменения содержимого позволяет только продолжить или завершить текущий отправленный коммит. Как я могу редактировать файлы, которые фиксируются? Я не мог найти ни одного примера для этого. - person Avi Shefi; 29.05.2014
comment
@AviShefi Ты не можешь этого сделать. Мы отклоняем фиксацию, если отправленный файл не равен отправленному файлу при форматировании. - person schorsch312; 21.01.2020