P4 Python - 描述搁置的文件更改

时间:2015-09-10 21:58:16

标签: python perforce

对搁置文件使用以下p4命令时,差异也会附加在输出的末尾。

> p4 describe -S 1529307
Change 1529307 by who@client on 2015/09/10 14:03:56 *pending*

Comment 

Shelved files ...
... //depot/projects/afile.py#4 edit

Differences ...

==== //depot/projects/afile.py#4 (text) ====
1c1
< testing1-2-3-4-5-6-7
---
> testing1-2-3-4-5-6-7-8-9-10

然而,当在P4Python中执行类似操作时,从运行(&#39; describe -S&#39;)函数返回的数据不包含版本的差异。

{
'status': 'pending', 
'code': 'stat', 
'depotFile0': '//depot/projects/afile.py', 
'changeType': 'public', 
'action0': 'edit', 
'fileSize0': '28', 
'shelved': '', 
'client': 'client', 
'user': 'who', 
'time': '144036', 
'rev0': '4', 
'digest0': '8C425B5CF', 
'data': '', 
'type0': 'text',
'change': '1529307', 
'desc': 'Comment\n'
}

我能想到的唯一解决方法是使用此处的depot-path查找文件,然后将其与之前版本的版本区分开来。但是我仍然认为应该有一种更简单的方法将这些信息嵌入到P4Python中。

谢谢!

2 个答案:

答案 0 :(得分:2)

我想出的当前解决方案如下。我希望P4Python尽快提供一种自动化方式,以便可视化搁置变化的差异。 如果您有更好的解决方案,请随时告诉我。

data = p4obj.run('describe -S ' + str(changelist))[0]

files = []
i = 0
while data.has_key('depotFile'+str(i)):
    files.append((data['depotFile'+str(i)],data['rev'+str(i)],data['action'+str(i)]))
    i += 1
for f in files:
    name = f[0]
    oldRev = str(int(f[1]))
    oldFile = tempfile.mktemp()
    oldFilespec = '%s#%s' % (name, oldRev)
    p4.runinteractive('print -q %s > %s' %(oldFilespec, oldFile))
    editedFile = tempfile.mktemp()
    editedFilespec = '%s@=%s'%(name, changelist)
    p4.runinteractive('print -q %s > %s' %(editedFilespec, editedFile))
    DiffTwoFiles(oldFile, editedFile, label1=oldFilespec, label2=editedFilespec)

答案 1 :(得分:0)

您可以使输出无标记。

这里有一个例子:

need equivalent python command for p4 describe

希望这有帮助, 仁。