P4通过命令行更改所有权

问题描述 投票:0回答:2

我有一个特定的用例,我需要在 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 中本地运行它只会输出用户和工作空间的信息。

我尝试这样做是为了简化流程,作为手动搁置/取消搁置的替代方法

version-control perforce p4v
2个回答
0
投票

如果您想切换工作区(在命令行中也称为 CLIENT),最简单的方法可能是设置 P4CLIENT 环境变量,然后您的所有命令都将使用该新工作区。

Powershell:

$env:P4CLIENT = "new_workspace_name"

CMD:
set P4CLIENT=new_workspace_name

Bash型炮弹:
export P4CLIENT=new_workspace_name

上面列出的命令用于输出工作区或用户的实际规范,而不是更改正在引用的命令。希望有帮助!


0
投票

使用

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'
© www.soinside.com 2019 - 2024. All rights reserved.