Perforce 中已提交更改的自动更新描述。 p4 change -u [更改列表]

Automatic update description of already submited change in Perforce. p4 change -u [changelist]

因此,我们必须处理多个更改列表并更改它们的描述。 P4V不是选项,命令总是打开记事本手动输入。

我想这是可能的,因为它在 P4V 编辑器中工作,甚至还有一个控制台命令。

我尝试使用命令行,但总是显示记事本输入:

p4 change -u 123< p4 change -i 123 (yeah even this shows the notepad)

使用 P4Python 也没有用:

change=p.fetch_change(changelist) 
change._description = do_change(change._description)
p.run_change('-u',change)
#p.save_change(... this works only with un-submitted changelists

而且我还在 Python 中尝试了普通的 Popen,但我像使用批处理文件一样卡住了。 我想有人已经做了类似的事情。任何提示非常感谢! 提前致谢。

您将 "change -u" 和 "change -i" 结合起来的想法是正确的,但这里是您想要的一般语法类型:

p4 change -o 123 | (text manipulation) | p4 change -u -i

"change -i"命令从标准输入读取变化形式,所以你需要有一个变化形式才能读取;最简单的方法通常是从 "change -o" 开始获取当前表单,然后使用简单的脚本对其进行修改(通常您可以使用 "sed" 一行来完成)。由于 "change -i" 是实际修改服务器上的表单的内容,因此这是需要“-u”的命令。

你说你试过了:

p4 change -u 123< p4 change -i 123 (yeah even this shows the notepad)

< 运行s p4 change -u 123 左侧的命令,当然会生成您的编辑器,因为它 运行 没有 -i。 (p4 change -i 从标准输入读取。)注意 p4 help change 显示:

p4 change -i [-s] [-f | -u] 

并且 p4 change -i 不期望更改编号(而是从 stdin 提供的更改描述中获取更改编号),但它确实明确声明它可以与 -u,所以你只需要:

p4 change -i -u < CHANGE_DESCRIPTION

感谢两位的回答:

P4Python中有解决方法:

p4.fetch_change(changelist)
p4Change._description = 'my new description'
p4.input=p4Change
p4.run_change('-u', '-i')

对我来说,你们俩都让我意识到的诀窍是,您可以将已提交的更改列表传递给 "change -u -i"。而且我发现了如何在 p4python 中进行管道传输……恕我直言,现在干净多了。 再次感谢两位!