Chromium gclient使用

rmb_999發表於2023-11-03

gclient 是由 Google 用 Python 開發的一套跨平臺的git倉庫管理工具,它的作用類似 git 的 submodule,用來將多個git倉庫組成一個solution進行管理,比如chromium專案是由80多個獨立的git倉庫構成的。這樣的好處是,一個git倉庫可以被多個solution共用,類似CBB的機制,只不過它是直接引用程式碼倉庫,而CBB是引用編譯好的程式。

具體來講,gclient 的核心功能是將solution中由DEPS檔案定義的所有git倉庫拉取到指定的目錄。圍繞著這個功能,它新增了一些其它的輔助功能,比如Hooksinclude_rules等功能。

 1. 關鍵概念

  • gclient: 一個跨平臺的程式碼倉庫管理工具,用於管理由多個程式碼倉庫組成的專案;
  • repo: 作用同gclient,是gclient的前輩,gclient是更新的工具;
  • roll_deps: 一個gclient 的輔助工具,用於更新DEPS檔案中某個專案的程式碼版本;
  • Gerrit/Rietveld: 一個Code Review系統,可以和git/svn整合;
  • Hooks: gclient中的術語,當gclient拉完程式碼之後執行的額外指令碼;
  • Solution: 一個包含DEPS檔案的倉庫,DEPS檔案中記錄了該solution所有依賴的專案;
  • .gclient: 一個由 gclient config 命令建立出來的檔案,內部記錄了要拉取的solution;
  • DEPS: 一個檔案,gclient 用於管理專案依賴的一個檔案,記錄了專案的依賴關係;
  • CL: Change List ,類似 git 的 diff 和 pack;
  • LKGR: Last Known Good Revision,一個git tag,記錄了最新的經過完整測試的版本;
  • managed: gclient 的一種模式,該模式已過時,不推薦使用;該模式用於幫助那些對git不熟悉的開發者更簡單的使用gclient;
  • inlcude_rules: 指定當前目錄下哪些目錄/檔案可以被其他程式碼inlcude,那些不可以被inlcude;
  • specific_include_rules: 作用同include_rules,但是可以使用萬用字元;

2. gclient 命令解釋

gclient config

該命令用來初始化要拉取的solution,它會在命令執行目錄下生成 .gclient 檔案; .gclient 檔案中記錄了要拉取的solution的倉庫地址,以及拉取後要儲存的位置,如下:

gclient sync

該命令用來同步solution。它有很多的引數可選:

 3. 其他

 

 4. 使用 gclient 的開發流程

 5. 參考資料

https://www.chromium.org/developers/how-tos/depottools/

https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up

 

相關文章