我有一个特定的用例,我需要在 Perforce 中创建一个按钮(自定义工具),它使用户能够右键单击包含签出文件的待处理更改列表,它将搁置文件,恢复签出文件,然后将用户更改为单个用户并将更改列表分配给特定工作区(与更改所有权按钮相同)
到目前为止,我已设置自定义工具来使用以下参数运行 p4:
shelve -f -Af -c %P revert -c %P //... change -U **user.name** %P
但这只会让我搁置更改、恢复并分配给用户,我错过了工作区更改,但似乎无法从文档中弄清楚这一点。
我运行了 perforce 并进行了完整日志记录,这表明我可以运行:
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
全局选项在我看来更容易),然后使用 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'