У меня есть конкретный вариант использования, когда мне нужно создать кнопку (Пользовательские инструменты) в Perforce, в которой она позволяет пользователю щелкнуть правой кнопкой мыши ожидающий список изменений с извлеченными файлами, и она отложит файлы, вернет извлеченные файлы, а затем измените пользователя на одного пользователя и назначьте список изменений определенному рабочему пространству (то же самое, что и кнопка «Изменить владельца»)
На данный момент я установил специальные инструменты для запуска p4 со следующими аргументами:
shelve -f -Af -c %P revert -c %P //... change -U **user.name** %P
Но это заставляет меня только отложить изменения, вернуть их и назначить пользователю. Мне не хватает изменения в рабочем пространстве, но, похоже, я не могу понять это из документации.
Я запускал принудительно с полным журналированием, что предполагало, что я могу запустить:
p4 user -o **user.name**
p4 spec -o user
p4 client -o **workspace.name**
p4 change -i
Но попытка запустить это локально в cmd/powershell просто выводит информацию о пользователе и рабочей области.
Я пытаюсь сделать это, чтобы упростить процесс в качестве альтернативы ручной расстановке/расстановке по полкам.
Если вы хотите переключить свое рабочее пространство (также известное как CLIENT в командной строке), самый простой способ, вероятно, — установить переменную среды P4CLIENT, тогда все ваши команды будут использовать это новое рабочее пространство.
Powershell: $env:P4CLIENT = "new_workspace_name"
ЦМД: set P4CLIENT=new_workspace_name
Снаряды типа Баш: export P4CLIENT=new_workspace_name
Перечисленные выше команды используются для вывода фактической спецификации рабочей области или пользователя, а не для изменения того, на кого из них ссылаются. Надеюсь, это поможет!
Используйте команду p4 change -o
для вывода текущей спецификации, затем измените ее (вы можете сделать это с помощью sed
, но глобальная опция --field
на p4
делает это намного проще, IMO), а затем используйте p4 change -i
, чтобы сохранить измененную спецификацию. Это общий процесс, который вы можете использовать для программного изменения любой спецификации Perforce (клиентов, потоков и т. д.).
В этом случае, поскольку вы меняете пользователя, вам также нужны аргументы -U
и changelist#
в команде p4 change -i
.
C:\Perforce\test>p4 changes -m1
Change 512 on 2024/03/28 by Samwise@Samwise-dvcs-1509687817 *pending* 'test change'
C:\Perforce\test>p4 --field User=bob --field Client=CLIENT change -o 512 | p4 change -i -U 512
Change 512 updated.
C:\Perforce\test>p4 changes -m1
Change 512 on 2024/03/28 by bob@CLIENT *pending* 'test change'