Updating files with a Perforce trigger before submit

I understand that this question has, in essence, already been asked, but that question did not have an unequivocal answer, so please bear with me.

Background: In my company, we use Perforce submission numbers as part of our versioning. Regardless of whether this is a correct method or not, that is how things are. Currently, many developers do separate submissions for code and documentation: first the code and then the documentation to update the client-facing docs with what the new version numbers should be. I would like to streamline this process.

My thoughts are as follows: create a Perforce trigger (which runs on the server side) which scans the submitted documentation files (such as .txt) for a unique term (such as #####PERFORCE##CHANGELIST##NUMBER###ROFL###LOL###WHATEVER#####) and then replaces it with the value of what the change list would be when submitted. I already know how to determine this value. What I cannot figure out, is how or where to update the files.

I have already determined that using the change-content trigger (whether possible or not), which

"fire[s] after changelist creation and file transfer, but prior to committing the submit to the database",

это путь At this point the files need to exist somewhere on the server. How do I determine the (temporary?) location of these files from within, say, a Python script so that I can update or sed заменить значение заполнителя на предполагаемое значение? Онлайн-документация для Perforce, которую я обнаружил до сих пор, не очень ясно указала, возможно ли это или как будет работать механизм представления на этом этапе.

РЕДАКТИРОВАТЬ

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

ПРИМЕР

Рассмотрим следующий фрагмент из документа с заметками о выпуске:

[#####PERFORCE##CHANGELIST##NUMBER###ROFL###LOL###WHATEVER#####] Added a cool new feature.  Early retirement is in sight.
[52702] Fixed a really annoying bug.  Many lives saved.
[52686] Fixed an annoying bug.

Это то, что пользователь отправляет. Затем я хочу, чтобы триггер перехватил этот файл во время процесса отправки (как уже упоминалось, на change-content stage) и измените его так, чтобы то, что в итоге сохранялось в Perforce, выглядело так:

[52738] Added a cool new feature.  Early retirement is in sight.
[52702] Fixed a really annoying bug.  Many lives saved.
[52686] Fixed an annoying bug.

Где 52738 - окончательный номер списка изменений того, что отправил пользователь. (Как уже упоминалось, я уже могу определить это число, поэтому, пожалуйста, остановитесь на этом.) То есть то, что пользователь видит на клиентской консоли Perforce.

Changelist 52733 renamed 52738.
Submitted change 52738.

3 ответа

  • Вы пытаетесь заменить содержимое ожидающих изменений файлов, которые были отредактированы в другом клиентском рабочем пространстве (и другом пользователе)?

  • Какой тип информации вы пытаетесь заменить в файлах документации? Например, это дата, имя пользователя, как с расширением ключевого слова RCS? http://www.perforce.com/perforce/doc.current/manuals/p4guide/appendix.filetypes.html

Я хочу получить более четкое разъяснение о том, что вы пытаетесь выполнить, если есть другой способ сделать то, что вы хотите.

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

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

99W,

Я также добавил вас к существующему запросу на усовершенствование настраиваемых ключевых слов RCS вместе с приведенным вами примером.

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

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

Поправьте меня, если я смотрю на это неправильно, но есть некоторая ирония или, возможно, рекурсия, если вы пытаетесь внести изменения в файл во время отправки изменения файла. Возможно, лучше иметь второй список изменений, зарезервированный для журнала. Вы всегда знаете, где находится этот файл, в вашем локальном файловом пространстве. Тем не менее, файлы ktext и поля $ могут помочь.

Другие вопросы по тегам