2016-08-15 86 views
4

我试图从命令行使用命令p4 change -i创建一个空更改列表,但似乎这个命令什么都不做,我没有收到任何错误/成功消息,命令行简单地返回没有,我必须用Ctrl + C杀死它。如何从命令行创建一个perforce空更改列表

我的p4客户端工作,我能够看到我所有的信息并正确执行所有其他操作,似乎只有创建新的挂起更改列表时出现问题。

任何人都遇到同样的问题?

P.s.我已经检查了P4V的方式来创建一个空的更改列表,并且实际上使用p4 change -i命令没有任何问题,但是如果我尝试从cli使用相同的命令,它将默默地失败。

回答

12

的变化形式,常规的“P4变化”命令是路可走:

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 
+0

也感谢 - 字段部分,这将是我的下一个问题:D – Max

+0

我可以使用--field运算符还检索更改列表的数据(如只返回描述)吗?对不起,在评论中提出要求 – Max

+2

试试“p4 -Ztag -F%Description%change -o CHANGE” –

1

只需使用“P4变化”将打开的编辑和保存时编号的变化如果您在使用交互式命令行创建

0

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选项。

+0

不承认 - 字段,因为已过时,如果你更新它,你将能够使用它(并且是非常有帮助的) – Max

+0

谢谢,更新为我工作。我不明白为什么--fields在“p4 help undoc”中提到,这是“不支持或过时的Perforce命令和选项”,而“p4 --help”没有提及它。 –

+0

这是因为它是不受支持的选项。使其“支持”将不可避免地意味着编写大量文档,说明如何将它与每个规范一起使用,因此它可能会使其不受欢迎或者增加许多令人讨厌的限制,从而使其更易于文档化。 ;) –

相关问题