2012-09-01 61 views
1

我正在開發一個應用程序,該應用程序應該與Perforce集成在基本Perforce命令的學習階段,我有一個'p4更改'如何工作的問題。得到提交的,比方說,影響文件在Perforce命令「P4更改」工作

  1. '//depot/Web/content/main.css'
  2. '//depot/Tool/app/init.py'

如果我們現在發出命令:

'p4的變化//庫/網絡/ ...'

然後變更列表將顯示在結果中。那麼Perforce如何管理這些信息呢?它打破了路徑和存儲?或者它執行在線子字符串查詢嗎?

我看到有在Perforce的數據庫架構字段, 「公共路徑」,在這種情況下,該值應爲:

'//庫/ ......'

所以在這種情況下,Perforce如何獲取信息?

+0

對我來說這似乎是一個很好的問題。爲什麼downvote? – user1054341

回答

2

對於每次更改,Perforce服務器都會記錄哪些文件受該更改的影響。

這是記錄在服務器數據庫中的關於更改列表的許多元數據之一。

該信息被'p4 describe'等命令用於查找正確的一組文件。

Perforce服務器包含一個複雜的模式匹配引擎,可以快速搜索數據庫以定位影響特定文件集的更改集,如文件模式所述。

這是服務器的核心操作,所以它對此行爲進行了高度優化。

+0

仍然不清楚:「p4 changes」命令使用的是「公共路徑」(a.k.a. db.change [x]中的「root」)嗎? – user1054341

+0

感謝您的輸入。如果使用「公共路徑」,那麼對於所有具有「路徑」參數且其前綴爲「公共路徑」的「p4變更」查詢,首先必須找到具有該「公共路徑」的所有「可能」 ,然後遍歷它們來檢查受更改列表影響的文件路徑是否位於作爲參數提供的路徑中。這應該會顯着降低性能。大多數優化是以這種方式發生的嗎? –

+0

我相信,根據提供給'p4變更'的參數的細節,有各種優化。多年來優化一直在擴展和調整,所以如果您擔心特定評論的表現,最好的辦法就是與Perforce支持部門聯繫以協助優化您的查詢。 –

相關問題