Lookerの複数人によるGit管理を1人寂しくシミュレーションしてみた

孤独が俺を強くする
2020.04.22

奈良県でリモートワーク中の玉井です。

LookerはLookMLをGit管理することができますが、バージョン管理の素人としては、実際に使ってみるとどうなるかイメージが浮かばなかったので、実際にやってみました。

公式情報

注意事項

筆者の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上で別ブランチを切ることはできるのですが、ローカルブランチ→その別ブランチにコミット…っていうのはできなさそうです(そういう時はローカルブランチは使わず、直接別ブランチを共同で編集する)。

機会があれば、別ブランチを切ったバージョンもやってみたいと思います。