gclient多原始碼管理工具 DEPS檔案
gclient來管理原始碼的checkout, update等。 gclient是google專門為這種多源專案編寫的指令碼,它可以將多個原始碼管理系統中的程式碼放在一起管理。甚至包括將Git和svn程式碼放在一起。
重點說明下和gclient密切相關的兩類檔案.gclient和DEPS。
.gclient檔案是gclient的控制檔案,該檔案放在工作目錄的最上層。是主檔案, ".gclient"檔案是一個Python的指令碼
它指定以下變數
solutions:一組字典,用於指定要獲取的專案
此檔案在src目錄的同級目錄。
- target_os:一個可選的(目標)作業系統陣列,用於獲取特定於作業系統的依賴項。
solutions陣列中描述的每個專案都可以包含一個可選的DEPS檔案。.gclient檔案是gclient config <url>手動生成的。
solutions下面又有下面這些值:
- name: the path of the checkout.
- url: the remote repository to fetch/clone.
- url : 原始碼所在的目錄,gclient希望checkout出的原始碼中包括一個DEPS的檔案,這個檔案包含了必須checkout到工作目錄的原始碼的資訊;
- deps_file 這是一個檔名(不包括路徑),指在工程目錄中包含依賴列表的檔案,該項為可選,預設值為"DEPS"
- custom_deps 這是一個可選的字典物件,會覆蓋工程的"DEPS"檔案定義的條目。一般它用作本地目錄中,那些不用checkout的程式碼,如
- "custom_deps": {
- "src/content/test/data/layout_tests/LayoutTests": None,
- "src/chrome/tools/test/reference_build/chrome_win": None,
- "src/chrome_frame/tools/test/reference_build/chrome_win": None,
- "src/chrome/tools/test/reference_build/chrome_linux": None,
- "src/chrome/tools/test/reference_build/chrome_mac": None,
- "src/third_party/hunspell_dictionaries": None,
- },
或者讓本地目錄從不同位置checkout一個新的程式碼出來,或者checkout不同的分支、版本等。也可以用於增加在DEPS中不存在的新的項 目
在每個checkout出的工程中,gclient期望發現一個DEPS檔案,它定義了工程不同部分都是如何checkout出來。
“DEPS”也是一個python指令碼,最簡單的,如下:
DEPS檔案指定專案的依賴項,它指定以下變數:
deps: a dictionary of child dependencies to fetch要獲取的子依賴項
- deps = {
- "src/outside" : "http://outside-server/[email protected]",
- "src/component" : "svn://svnserver/component/trunk/[email protected]",
- "src/relative" : "/trunk/[email protected]",
- }
deps的每個條目都包含一個key-value對,key是被checkout的本地目錄,而value就是對應的遠端URL。
如果路徑是以'/'開頭的,那麼它是一個相對URL,相對與.gclient中URL地址。
hooks: hooks to run after a sync.
- Var(): replace this string with a variable defined in vars or overridden.
將此字串替換為在vars中定義或覆蓋的變數