本文根據gclient幫助整理。
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
google的chromium專案是用gclient來管理原始碼的checkout,update等。gclient是google專門為這種多源專案編寫的指令碼,它可以將多個原始碼管理系統中的 放在一起管理。甚至包括將git和svn 放在一起。gclient的sync,update等命令很容易學習和使...
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檔案是...