🌲

モバイル開発でのレビューはgit worktreeと相性が良い

2024/05/23に公開

自分は普段iOSアプリの開発をしていて、その中でレビューを効率的にするためにgit worktreeを使っているのでその詳細を記録に残します。

前提

  • リポジトリの管理にはghqを使用している
  • xcodeプロジェクトの管理にはxcodegenを使用している

問題

普段、iOSアプリのレビューをする際に自分の作業を止めてレビューをする場合、

  1. 変更をstashして一時避難
  2. レビューするブランチにcheckout
  3. xcodegenで関連ファイルや依存をアップデート
  4. ビルドしたりして確認
  5. レビューを終える
  6. 元のブランチにcheckout
  7. stashした差分を戻す
  8. xcodegenで関連ファイルや依存をアップデート

のような流れでやることが多いです。
(もちろんlocalで動かさず差分を眺めるだけでレビューする場合も多い。)

この作業がめんどすぎるのでgit worktreeを使っています。

git worktree

ドキュメント

こんな感じで記述すると、新しいフォルダを掘ってそこの配下で対象のブランチにcheckoutしてくれます。なので複数のブランチに並列でcheckoutすることができます。

git worktree add <作りたい場所> <ブランチ>

並列で複数のブランチにcheckoutすることができるので1~8の手順のうち、自分の作業ブランチ側で行なっていたような作業を行う必要がなくなりました。

同じようなことはローカルリポジトリを他の場所にも作ればgit worktreeを使わずとも達成できるのですが、リポジトリの管理にghqを使っている関係上無駄にそのエコシステムから外れた運用をしたくないです。なのでgit worktreeでリポジトリ配下に作る形で運用するのは今の自分の環境的にマッチしています。

デメリット

  • よくある.envなどのgit管理していないような差分は共通化できないのでコピーする必要がある。
  • 編集やビルドなどのためにxcodeで開く際はパスが違うので別途指定する必要がある。

Discussion