P4 смена владельца через командную строку

У меня есть конкретный вариант использования, когда мне нужно создать кнопку (Пользовательские инструменты) в 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 просто выводит информацию о пользователе и рабочей области.

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


190
2

Ответы:

Если вы хотите переключить свое рабочее пространство (также известное как 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'