問題:
我有一個利用 Sphinx 建置的文檔專案,並已上傳至 GitHub。該文檔專案的 theme 是自行設計,並準備給多個文檔專案引用 (也就是共用),所以 theme 也是視為另一個專案,並也上傳至 GitHub。
這樣的作法可以確保爾後所有的文檔專案,都可以引用到最新版本的 theme,而不用個別採複製、覆蓋的方式來個別維護 theme 的檔案結構。
所以該如何讓文檔專案可以引用 theme 專案,建立關聯?
解決方案
利用 Git submodule 指令,讓該文檔專案將 theme 專案視為主專案內的子模組。
簡單作法:
- 新增 submodule:
git submodule add git://github.com/username/custom_theme.git _theme
如此在主專案目錄下,會新增子目錄 _theme 與檔案-.gitmodule,內容為:
[submodule "_themes/custom"] path = _themes/custom url = https://github.com/username/custom_theme.git
Git 就是利用這個檔案建立主從專案的關聯性。
-
註冊與更新 submodule:
git submodule init
根據 .gitmodules 的名稱和 URL,將這些資訊註冊到 .git/config 內。
git submodule update
根據已註冊(也就是 .git/config )的 submodule 進行更新。
** 主專案如果利用 git clone 指令將位於遠端 (如 GitHub)的儲庫複製回 local 時,submodule 並不會一同被複製回來,所以 submodule 所對應的目錄是空的;此時就可以利用上述兩個指令,確實把 submodule 的內容抓回來。
※ 參考資訊
o Git submodule tutorial。
o Git Book/Git Tools-Submodules。
o Git Submodule 用法筆記。