Вы захотите написать триггер изменения содержимого. Эти триггеры запускаются после передачи файлов на сервер, но до их фиксации в БД. Согласно документации на исполнение вы можете использовать команду, аналогичную следующей
p4 diff //depot/path/...@=<change>
В триггере содержимого изменений @ = (где изменение - это номер списка изменений, отправленный триггеру) получит содержимое отправленных файлов. Если вы ищете способ проверить версию сервера, вы можете сделать что-то вроде
p4 diff -sr //...@=<change>
Команда -sr сообщит о файлах, которые открываются и совпадают с текущим содержимым депо. Поскольку файлы еще не были зафиксированы, я собираюсь предположить, что вы фактически получите список файлов, содержимое которых было передано на сервер, совпадает с текущей версией заголовка в хранилище. Если p4 diff -sr возвращает одинаковые файлы, возвращает ненулевой код завершения, и отправка будет остановлена, и пользователю придется вручную возвращать свои неизмененные файлы.
Я не думаю, что вы действительно хотите изменить содержимое списка изменений, выполнив для него возврат. Это звучит слишком опасно.
Обратите внимание, что вы можете написать свой триггер на любом языке, который имеет смысл (как предложил предыдущий плакат). Я действительно думаю, что этот вид триггера будет довольно тяжелым, хотя. По сути, вы будете применять diff для всего контента, представленного для всех пользователей, чтобы сделать один шаг разработчика в линию. Возможно, это приемлемая цена, но в зависимости от количества пользователей и размеров их списка изменений (и файлов) запуск такого рода триггера может занять много времени.