Есть два варианта получения файлов из отложенного списка изменений; один из них прост, но требует управления более постоянным состоянием на сервере, а другой более не имеет состояния, но требует большей логики на стороне клиента.
Стандартный рабочий процесс (т. е. то, что сделали бы большинство пользователей Perforce) заключается в том, чтобы извлечь файлы из полки в рабочее пространство клиента:
p4 unshelve -s CHANGE
Файлы в отложенном списке изменений будут автоматически синхронизированы с вашей рабочей областью (в соответствии с вашим представлением клиента) и открыты в вашем списке изменений по умолчанию. Это простой вариант, потому что вам просто нужно запустить эту одну команду, чтобы все файлы были в предопределенном локальном расположении. Оттуда вы можете свободно изменять их и либо отправлять, либо переносить в другой список изменений (или в тот же список изменений, если вы изменяете его, чтобы сделать себя владельцем).
Для этого требуется, чтобы у вас уже было настроено рабочее пространство и чтобы файлы там еще не были открыты, поэтому, если вы делаете это в сценарии, сценарий необходимо заранее настроить с подходящим рабочим пространством, и ему потребуется чтобы убедиться, что в какой-то момент он либо отправит, либо отменит изменения, или ему нужно будет знать, как создать собственное рабочее пространство, запустив p4 client
, выбрав уникальный корень клиента и т. д.
Вариант без сохранения состояния — использовать p4 print
для получения содержимого отложенного списка изменений:
p4 print @=CHANGE
Это приведет к потоковой передаче файлов на стандартный вывод, а заголовки между ними будут указывать путь к хранилищу. Если ваш линтер может обрабатывать потоковые данные, это может быть простым вариантом; если ему нужно прочитать файлы с диска, вам придется реализовать логику, необходимую для размещения файлов в подходящем месте, и очистить их, когда вы закончите.
Перевод любого из вышеперечисленного на p4python довольно прост (я бы попытался сделать пример кода, но установщик p4python в настоящее время не работает в Windows, поэтому я некоторое время не мог использовать p4python), но я рекомендую сначала ознакомьтесь с приведенными выше командами на терминале в тестовой среде, чтобы вы могли лучше понять интерфейс и требования к настройке рабочей области, аутентификации и т. д., прежде чем реализовывать эту логику в сценарии.
person
Samwise
schedule
05.06.2020