2014-03-19 33 views
1

我是Perforce Python API的新手,仍然在尋找解決方法。到目前爲止,如果我提供文件名,我一直能夠檢索像number,desc等更改列表信息。我正在嘗試獲取指定日期/時間範圍內所有提交的更改列表,以便我可以收集更改的文件和每個更改列表的描述等信息。有沒有一種方法可以使用API​​執行此操作?如何使用Perforce Python API在一天內檢索提交的更改列表

感謝

+0

我在文檔中看不到任何明顯的東西。由於API是由Perforce自己提供的,您是否曾嘗試向Perforce提交支持憑單來問這個問題? – Talvalin

+0

是的,我在文檔中也找不到任何東西。我還沒有提交過Perforce的門票。如果不是我正在尋找的確切的東西,我仍然試圖找到一些解決方法。 – Periastron

回答

1

less than extensive P4Python documentationa question from the Perforce forum的讀取時,該代碼可能做的伎倆,但記住它是完全未經測試**所以買者自負和所有

在filelog命令時,...似乎是請求文件夾中所有文件的方式,因此您只需要用適當的值替換serverfolder

from P4 import P4, P4Exception 
p4 = P4() 
p4.port = "1" 
p4.user = "User" 
p4.client = "Client" 

try: 
    p4.connect() 
    changelist = p4.run_filelog('//server/folder/[email protected]/mm/dd,@now') 
    for r in changelist: 
     print r.depotFile 
     print r.revisions[0].time 

except P4Exception: 
    for e in p4.errors: 
     print e 

finally: 
    p4.disconnect() 

**是的,我可以下載的Perforce,安裝,添加了一些文件,然後進行測試的代碼,但這似乎是一個溫和的程度矯枉過正。

+0

這個方法適合我。我發現使用API​​會更好一些,因爲我可以訪問所有其他字段和方法。謝謝! – Periastron

1

繼file.c當今變化的代碼輸出列表:

import subprocess 
import datetime 
curr = datetime.datetime.now() 
file = "file.c" 
cmd = 'p4 changes -s submitted %[email protected]%s/%s/%s,@now' % (file, curr.year, curr.month, curr.day) 
print subprocess.check_call(cmd) 

請注意,你應該已經在上面的腳本執行前設置P4PORT和P4USER在您的環境。如果你不想設置,你可以使用-p和-u開關在命令中設置它們。

在上面的代碼中,查詢是爲在file.c上獲取當前更改列表而創建的。您可以操作日期和文件名以獲得您想要的結果。

+0

感謝您的示例。它有助於。儘管不是文件,可以用於文件夾嗎?更改特定文件夾中所有文件的列表?我正在使用的倉庫有成千上萬的文件,並且很難在逐個文件的基礎上做到這一點。使這個工作在文件夾的基礎上將爲我做的伎倆。 – Periastron

+0

是的..它可以工作的文件夾..只提交文件=「// mysrc/mypath/...」 – user3

+0

酷!我會盡快嘗試,並在這裏發佈它是如何去的。這是否需要除Perforce Python API以外的其他P4設置或安裝? – Periastron

0

您也可以使用這樣的:

from P4 import P4, P4Exception 
p4 = P4() 
p4.port = "A" 
p4.user = "B" 
p4.client = "C" 

try: 
    p4.connect() 
    changelist = p4.run_changes('//server/folder/[email protected]/mm/dd,@now') 
    # p4.run("change","//server/folder/[email protected]/mm/dd,@now") works as well 
    for c in changelist: 
     print c.desc 
     # or whatever you want, including: status, client, user, changelist... 

except P4Exception: 
    for e in p4.errors: 
     print e 

finally: 
    p4.disconnect() 

對我來說,感覺比較正確的,因爲它使用了P4Python API和正確的run方法(調用P4改變命令),你也得到了很多有關每個更改列表的更多信息。

Chee

相關問題