Perforce中已提交的更改的自动更新说明。 p4改变-u [changelist]

时间:2015-10-30 16:05:27

标签: python perforce

因此,我们必须处理几个更改列表并更改其描述。 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,但是我使用批处理文件时遇到了困难。 我想有人已经做了类似的事情。任何暗示非常赞赏! 提前谢谢。

3 个答案:

答案 0 :(得分:2)

通过组合&#34;改变-u&#34;你有了正确的想法。并且&#34;更改-i&#34;,但这里是您想要的一般语法:

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

&#34;改变-i&#34;命令从stdin读取更改表单,因此您需要有一个更改表单供它读取;最简单的方法通常是从&#34;更改-o&#34;开始获取当前表单,然后使用一个简单的脚本来修改它(通常你可以使用&#34; sed&#34; one-liner)。自从&#34;改变-i&#34;是实际修改服务器上的表单,这是需要&#34; -u&#34;的命令。在它上面。

答案 1 :(得分:0)

感谢两位回答:

P4Python中有一个解决方案:

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

对我来说,你们两个让我意识到的诀窍是,你可以传递给已经提交的变更清单“更改-u -i”。我发现如何在p4python中管道......现在是一个更清洁的imho。 再次感谢!

答案 2 :(得分:-1)

你说你试过了:

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

<左侧的命令会运行p4 change -u 123,当然这会产生您的编辑器,因为它不会与-i一起运行。请注意,p4 help change显示:

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

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

-u