カノジョできないエンジニア Advent Calendar 2016 4日目

「孤独と寄り添うエンジニアはリア充の可能性が微粒子レベルで存在している」
と言ったな、あれは嘘だ。

エンジニアになってからクリスマスは一人で過ごしてます。
クリスマスって一人で酒飲むイベントじゃね?
頷いた君とは仲良くなれそうだ、一緒に酒を飲もう。

ちなみに弊社内でこの、カノジョできないエンジニア Advent Calendarが話題になり、
Qiitaのアカウントを持っていなかった私がAdvent Calendar申し込みのためにアカウントを作っていたら、
「Qiitaのアカウント作る時間があったらカノジョの一人や二人できるだろ」という発言がありました。
お、おう…

本題のまえに

さて本題の前に軽く自己紹介+宣伝。
cloudpack の小谷松です。
サーバの運用保守がメインと思われがちな弊社ですが、もともとはWeb開発の会社です。
デザインチームも発足し、ともにWeb開発に取り組んでおります。
デザインチームの人たちは「馬肉はウマに近い」などと意味不明な言動を繰り返しています。大丈夫かこれ。
最近ではアプリ開発チームもできました。カノジョできないエンジニア(重要)を募集しています。

Git subtree

さて本題です。
開発のソースとデザインのソースが一つのGitになっていると管理体制がバラバラになってしまいます。
果ては開発の改修とデザイン変更がバッティングした場合、
誰が管理するの?
誰が埋め込んだバグなの?
なんでここデザイン変更されてるんだっけ?
と面倒なことになってしまいます。(小声:ほんとシャレにならんかった)

開発側のリーダーとデザイン側のリーダーとで分かれて作業をし、
ソース管理もまるっと別の体制にしておくと精神衛生上、非常によい環境をつくれます。
この環境を作るために必要なのが Git subtree です。

構造

Laravelを使っていると下記のような構造になっています。

  • app
  • bootstrap
  • config
  • database
  • public (DocumentRoot)
  • ….

public 下に、デザイン側のGitからモック用のHTML,JS,CSSを置くためにsubtreeを使います。
デザイン側Gitから、 public/mock 下に取り込んでやれば、
下記の通り、別管理のソースを取り込むことができます。

  • public
    • mock
      • xxx.html
      • css
      • js

クライアントへのデザイン共有も、 /mock/xxx.html をみてください、とできるわけですね。
モックを作ってそれをベースにデザインの話をするのにもってこいです。

また、プログラム側はデザインチームが作ったjs,cssファイルを使うには
src="/mock/js/xxx.js" としておけば、
デザイン側からのCSS調整があった場合、開発側は特に気にする必要はないですね。
デザインの演出用のJSと、実装用のJSファイルが別Gitにあるので分業が完璧にできます。

どうやるの

Gitはyumでインストールすると1.7.1が入りますが、
このままではバージョンが低くてsubtreeを使えません。(1.8以上)
まずはGitをアップデート します。

Git subtreeが有効になったら、下記コマンドを実行します。

git remote add    

上記でサブツリーとして取り込むリポジトリをリモートリポジトリに追加。
git remote add design https://xxxxx/xxx.gitでOKですね。

デザインの更新を取り込むためにpullするには下記のコマンドを使います。

git subtree pull --prefix=public/mock --squash design master

--prefix で、どのディレクトリにサブツリーを置くか指定できます。
今回は public/mock としたので、前述のディレクトリ構成にできます。
同じコマンドを実行すれば、デザイン側の修正を反映させることができます。

まとめ

Git subtreeを使って、2つのリポジトリをまとめてサーバ上に置くことができました。

  • 開発側の修正を適用
    • git pull origin master
  • デザイン側の修正を適用
    • git subtree pull –prefix=public/mock –squash design master

来年のカノジョできないエンジニア Advent Calendarは参加条件を満たしていませんように。

元記事はこちら

Git subtreeでデザインチームと協業する