Google 多原始碼管理工具 gclient

2021-08-19 04:59:28 字數 2495 閱讀 9848

google的chromium專案是用gclient來管理原始碼的checkout, update等。 gclient是google專門為這種多源專案編寫的指令碼,它可以將多個原始碼管理系統中的**放在一起管理。甚至包括將git和svn**放在一起。

gclient的sync,update等命令很容易學習和使用,不再多說,重點說明下和gclient密切相關的兩類檔案.gclient和deps。

.gclient檔案是gclient的控制檔案,該檔案放在工作目錄的最上層。".gclient"檔案是乙個python的指令碼(google真是對python情有獨鍾啊),定義了一組"solutions",格式類似如下

[python]view plain

copy

solutions = [  

},  

][python]view plain

copy

"custom_deps": ,  

或者讓本地目錄從不同位置checkout乙個新的**出來,或者checkout不同的分支、版本等。也可以用於增加在deps中不存在的新的項 目

[python]view plain

copy

target_os = ['android']  

如果target_os_only值為true的化,那麼,僅僅checkout出對應的**,如

[python]view plain

copy

target_os = [ "ios" ]  

target_os_only = true

在每個checkout出的工程中,gclient期望發現乙個deps檔案(由deps_file來給定),它定義了工程不同部分都是如何checkout出來。

「deps」也是乙個python指令碼,最簡單的,如下:

[python]view plain

copy

deps =   

deps的每個條目都包含乙個key-value對,key是被checkout的本地目錄,而value就是對應的遠端url。

如果路徑是以'/'開頭的,那麼它是乙個相對url,相對與.gclient中url位址。

url通常包含乙個版本號,以便鎖定原始碼在特定版本上。當然,這是可選的。如果沒有,那麼它將獲取指定分支上最新的版本。

deps還可以包含其他型別的資料,如vars, 

[python]view plain

copy

vars =   

vars定義了一組變數,在後面,可以通過var(***)來訪問。var(***)返回乙個字串,故此,也可以進行操作,如

[python]view plain

copy

'src/third_party/cros_dbus_cplusplus/source':  

var("git.chromium.org") + '/chromiumos/third_party/dbus-cplusplus.git@5e8f6d9db5c2abfb91d91f751184f25bb5cd0900',  

'src/third_party/webkit':  

nbsp;     var("webkit_trunk")[:-6] + '/branches/chromium/1548@153044',  

第二個自立,var("webkit_trunk")[:-6]是乙個python表示式,表示取得"webkit_trunk"表示的字串的最後6個

hooks:deps包含可選的內容 hooks,也有重要的作用,它表示在sync, update或者recert後,執行乙個hook操作。

如果使用 --nohooks選項(hook預設執行),那麼在gclient sync或者其他操作後,不會執行hook。你可以通過gclient runhooks來單獨執行; 如果有 gclient sync --force,那麼,無論sync是否成功,都會執行hook。

hook在deps中的寫法,一般是:

[python]view plain

copy

hooks = [  

,  ,  

]  hooks包含一組hook,每個hook有幾個重要項:

deps_os: deps中定義不同平台依賴關係的專案,如

[python]view plain

copy

deps_os = ,  

"ios": ,  

...  

}  deps_os指定不同平台的依賴,它可以包含多種平台,和.gclient中的target_os對應。這種對應關係如下:

[python]view plain

copy

deps_os_choices =   

Google 多原始碼管理工具 gclient

本文根據gclient幫助整理。google的chromium專案是用gclient來管理原始碼的checkout,update等。gclient是google專門為這種多源專案編寫的指令碼,它可以將多個原始碼管理系統中的 放在一起管理。甚至包括將git和svn 放在一起。gclient的sync,...

gclient多原始碼管理工具 DEPS檔案

gclient來管理原始碼的checkout,update等。gclient是google專門為這種多源專案編寫的指令碼,它可以將多個原始碼管理系統中的 放在一起管理。甚至包括將git和svn 放在一起。重點說明下和gclient密切相關的兩類檔案.gclient和deps。gclient檔案是gc...

gclient多原始碼管理工具 DEPS檔案

gclient來管理原始碼的checkout,update等。gclient是google專門為這種多源專案編寫的指令碼,它可以將多個原始碼管理系統中的 放在一起管理。甚至包括將 git 和svn 放在一起。重點說明下和gclient密切相關的兩類檔案.gclient和deps。gclient檔案是...