Version Control with Git ch17 Submodule Best Practices
- Submodule Commands
- Why Submodules?
- Submodules Preparation
- Why Read Only?
- Why Not Read Only?
- Examining the Hashes of Submodule Commits
- Credential Reuse
- Use Cases
- Multilevel Nesting of Repos
- Submodules on the Horizen
- 英語
Submodule Commands
- いろいろある
Why Submodules?
- モジュール化のため
Submodules Preparation
- submodule切り出し対象は大抵すでにディレクトリになっている
- submoduleを切り出す流れ
Why Read Only?
- 開発活動の分離を強制してくれる
- サブモジュールで独立して開発・テスト・ビルドを行う
- 上位プロジェクトからチェックアウトする
- 回りくどいけれど暗黙的に最新コミットを指してしまうよりもよい
Why Not Read Only?
- 上位プロジェクト内のサブモジュールを直接いじることもできる
- 手っ取り早い
- ただしリスキー
- サブモジュールのpushを忘れると他の開発者が困る
Examining the Hashes of Submodule Commits
- treeが、treeやblobのようにcommitを指す感じ
Credential Reuse
--recurse-submodules
をつけてcloneすると、サブモジュールにも再帰的に認証情報が適用される
Use Cases
- 書籍のコードサンプルをopen sourceに
- 上位プロジェクトはclosed
- サンプル別にサブモジュールを切りopen sourceにする
- プラグイン
- 手作業コピペと異なり、歴史の紐付けができる
- 巨大リポジトリ
- 可視性制御
- 開発者にサブモジュールをcloneさせない
- CIサーバーのSSH鍵でだけサブモジュールをcloneできるようにする
- 顧客に届くビルド成果物は必ずCIサーバでしかビルドできなくする
Multilevel Nesting of Repos
--recurse-submodules
オプション- git clone,fetch,pullが対応
--recurse
オプション- submodule status, update, for each
Submodules on the Horizen
- GUIのサポートなどが拡充してきている
英語
- fault lines
- 断層
- lament
- 嘆き悲しむ