2017-05-03 50 views
1

因此,我在Perforce的網站上發現了this answer,似乎建議p4將-m1 @ label1更改爲要使用的命令。不幸的是,我遇到請求過大(超過100000)使用問題,對一些標籤,這是推動我絕對是瘋了,因爲我運行命令時已經包含了-M1選項。有沒有辦法避免這個錯誤,或者有一個替代命令獲得相同的結果。提前感謝您的回答。在Perforce中,如何獲得作爲標籤一部分的最高changlist號碼?

+0

你不能限制它通過使用路徑? 'p4改變-m1 // some/path /[email protected]'? – sferencik

+0

@sferencik我從標籤視圖中嘗試了路徑,但是一些倉庫拋出了相同的錯誤。以遞歸方式繼續進行將會太麻煩,因爲我的腳本是非常通用的。 –

回答

2

由於標籤可以包含任意一組修訂版本,因此服務器在所有修訂列表中找到最高更改列表的唯一方法是掃描每個修訂版以查找與每個修訂列表相關聯的更改列表,並返回找到的最高列表,所以它是O(n),其中n是標籤尺寸。如果您在100k時觸及MaxScanRows限制,我會假設這些標籤包含超過100k個文件?你可以看到有多少記錄被任何給定的命令掃描通過與-Zdbstat標誌運行它,就像這樣:

p4 -Zdbstat changes -m1 @label 

增加的MaxScanRows是一個解決方案,因爲P4Jen說,但它不會讓命令掃描任何更少的行或消耗更少的時間。作爲一個更全面的解決方案,我建議從手動填充標籤如果可能的話越來越遠,並移動到該被定義爲簡單的變更表的別名標籤:

Label: label 
Revision: @CHANGE 
View: 

注意,爲了得到一個「別名」標籤的全部性能優勢(即標籤的處理方式與更改完全相同),修訂字段必須設置爲更改列表,並且「查看」字段必須爲空(如果「查看」字段不爲空,您將得到一個具有其自身性能特徵的「自動」標籤)。

使用別名標籤,只需將標籤視爲O(1)操作即可獲得等效更改列表。 :)

1

這聽起來像是你正在碰到'MaxScanRows'限制。

這將由管理員設置。

關於它的更多信息是在這裏: http://answers.perforce.com/articles/KB/2529

希望這有助於 仁。

+0

感謝您的回答。 :)但我知道。我想知道是否有辦法避免它,或者是否有替代命令來實現。問候。 –

相關問題