如何通过命令行创建一个空的Perforce changelist

10
我正在尝试使用命令p4 change -i从命令行创建一个空的更改列表,但似乎这个命令没有任何作用,我没有收到任何错误/成功消息,命令行仅仅返回空白,并且我必须通过ctrl+c来终止它。
我的p4客户端工作正常,我能够看到所有的信息并正确进行所有其他操作,似乎只有创建新的挂起更改列表时才出现问题。
有人遇到过同样的问题吗?
附注:我已经检查了P4V创建空更改列表的方式,并且实际上使用p4 change -i命令而没有任何问题,但如果我尝试使用相同的命令行命令,则会静默失败。
3个回答

27

如果您正在交互式地使用命令行,则常规的“p4 change”命令是适合您的方法:

p4 change

这会在你的编辑器中打开变更列表规范,以便你填写它,在你保存文件并退出编辑器时保存变更列表。

如果你正在进行脚本编写,可以使用"p4 change -i"命令,但需要确保通过stdin提供有效的变更列表表单。 "p4 change -o"命令提供了与"p4 change"(通过stdout而不是编辑器)相同的表单,所以只需要填写描述和/或修改要包括的文件列表。 这里的--field选项很有用:

p4 --field "Description=My pending change" change -o | p4 change -i
如果您希望新的变更列表为空,而不是继承默认变更列表中的打开文件,请将“文件”字段留空:
p4 --field "Description=My pending change" --field "Files=" change -o | p4 change -i

谢谢你提供的--field部分,这将是我接下来要问的问题:D - Max
1
我能否使用“--field”运算符来检索数据(例如仅返回更改列表的描述)?抱歉在评论中提问。 - Max
2
尝试使用命令“p4 -Ztag -F %Description% change -o CHANGE” - Samwise
2
我收到了“无效选项:--field”的错误提示。 - Sahil Singh
1
更新您的p4可执行文件;这是2016.1版本的新功能。 - Samwise
显示剩余2条评论

1

只需使用 "p4 change",就会在编辑器中打开更改表单,并在保存后创建一个编号的更改。


1

我的 p4 不理解 --fields 选项。以下方法适用于我。

#Powershell commandlet
echo "Change: new`nClient: <client-name>`nUser: <user-name>`nStatus: new`nDescription: NewCL"|p4 change -i

替换<>括号中的项目。

这里只是回显部分的输出。

#Powershell commandlet
PS C:\Users\sahil> echo "Change: new`nClient: <client-name>`nUser: <user-name>`nStatus: new`nDescription: NewCL"
Change: new
Client: <client-name>
User: <user-name>
Status: new
Description: NewCL

正如您所看到的,echo命令只是构建了一个格式化字符串,p4 change -i接受它。
上面使用`n表示换行。
请注意,我已经排除了Files,因为我希望更改列表为空。 更新-我更新了我的perforce安装,现在p4理解--fields选项。

不认识 --field,因为它已经过时了,如果你更新它,就可以使用它(而且非常有用)。 - Max
谢谢,更新对我有用。我不明白为什么“p4 help undoc”中提到了“--fields”,它是针对“不支持或过时的Perforce命令和选项”,而“p4 --help”没有提到它。 - Sahil Singh
这是因为它是一个不支持的选项。要使其“支持”,必然意味着需要编写大量文档,展示如何在每个规范中使用它,所以要么将其设置为未记录选项,要么添加许多烦人的限制,以便更容易地记录。 ;) - Samwise
@SamStafford 你是说新功能首先被添加到不受支持的部分,随着改进和投入更多时间,它们才会被添加到受支持的部分吗? - Sahil Singh
1
在某些情况下,但并不总是或普遍如此。如果功能是实验性的或者是“高级用户”功能,对于一般人来说很难支持,那么它们就会作为“undoc”(有时仍然如此)开始。 “p4 flush”是一个很好的历史例子(最终变成了“p4 sync -k”,但由于它是非常适合高级用户的功能,可能会给不理解它的普通用户带来问题,因此它长时间以来都是undoc)。大多数功能并不是从undoc开始的。 - Samwise

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接