Lookerの複数人によるGit管理を1人寂しくシミュレーションしてみた
奈良県でリモートワーク中の玉井です。
LookerはLookMLをGit管理することができますが、バージョン管理の素人としては、実際に使ってみるとどうなるかイメージが浮かばなかったので、実際にやってみました。
公式情報
- Using Version Control and Deploying
- Configuring Project Version Control Settings
- Git Command Reference
注意事項
筆者のGitスキルはド素人です(VSSが一番使用歴が長く、Subversionで感動していたレベル)。
シミュレーション内容
ブランチ等
各Lookerユーザーのローカルブランチとmasterブランチの2種類のみを使う、超シンプルな形をやります。人数も画像通り2人を想定(AさんBさん)。
※Overview: Git and Looker - Administration - Looker Communityより
やってみた
[Aさん]リポジトリを設定する
下記記事内で使ったProjectにリポジトリを設定します。
下記の記事通りにリポジトリを設定します。ただし今回使うのはGitHub(のプライベートリポジトリ。事前に用意しておきます)。
加えて、Pull Rerquest RequiredのオプションをONにします。masterブランチにマージする際、プルリクを必須にします。
[Aさん]既存Projectを本番にデプロイ(masterブランチにマージ)する
Gitリポジトリを設定する前から、Projectとしては一旦完成しているという体なので、これをリリース第一弾としてmasterブランチにマージします。
まず、マージする前に、自分のローカルブランチに現在のProjectをコミットします。
すると、「Pull & Merge Other Changes」というボタンがメッセージとともに表示されます。ローカルブランチに一旦コミットしただけで、まだmasterブランチにマージ(本番デプロイ)してないため、本メッセージが表示されていると思われます。ここはメッセージに素直に従って、一旦masterブランチをローカルブランチにプルします。
本番デプロイできる状態になったので、実施します。
[Bさん]Aさんが用意したProjectを使用
ここで別の開発者ユーザー(Bさん)が登場します。事前に、Bさんに当Projectが見えるよう権限を与えておきます。
ローカルブランチにコミット
Bさんのローカルブランチであることを確認し、masterの内容をプル後、modelファイルに変更を加えて、LookMLのバリデートを済ませると、コミットできるようになるので、コミットします。
masterにマージする
上記の変更をmasterにマージします。まずはOpen Pull Requestを選択。
GitHubのプルリク画面に遷移するので、そのままプルリクします。
コンフリクトは無いため、そのままマージできました。
前述の通り、このProjectでは「Pull Rerquest Required」をONにしています。ですので、masterへのマージには、プルリクが必須となり、連携サービスであるGitHubのプルリク画面に遷移します。つまり、このProjectの開発者は、それぞれGitHubアカウント(及びリポジトリへのアクセス権)が必要ということに注意しましょう。
[Aさん]masterブランチからプルした後に再度編集
本番からプル
masterブランチにBさんのコミットがマージされたため、Aさんのローカルブランチとmasterブランチに差異が発生しています。Aさんは追加で開発を行いたいので、まずはmasterブランチからBさんコミット分をプルします。
ローカルブランチにコミット
そして、新たに編集した内容をローカルブランチにコミットします。
[Bさん]新たに編集
ローカルブランチにコミット
ここで、Bさんも同じように再度追加で編集します。ローカルブランチにコミット。
AさんもBさんも本番デプロイ
そして、AさんもBさんも変更点をmasterブランチにマージするため、プルリクします。まず、Bさん分をマージして、その後、そのままAさん分もマージしようとしてみます。
すると、コンフリクトが発生しました。AさんもBさんも同じ箇所を編集していたため、変更に競合が発生しています。
「Resolving conflicts」で競合を修正します。今回は両方の内容を取り込むようにします。
最終的に下記のようになりました。
最新masterをプル。
おわりに
LookerでGit運用した時の最低限の流れを一人でやってみました。Git素人なので、おそらくもっとスムーズな方法もあるのだと思いますが、まあとりあえずやってみたということで。
Gitには色々なブランチモデルがありますが、あくまで「LookerのGit管理機能」なので、どこまで実現できるかは要検証だと思いました(git-flowとか)。例えば、Looker上で別ブランチを切ることはできるのですが、ローカルブランチ→その別ブランチにコミット…っていうのはできなさそうです(そういう時はローカルブランチは使わず、直接別ブランチを共同で編集する)。
機会があれば、別ブランチを切ったバージョンもやってみたいと思います。