metahub for github
DESCRIPTION
Introduction of metahub as a github utility. TechHills #5 "Go to Git!"TRANSCRIPT
metahub for github―git移行のその先にあるもの―
KLab株式会社
Engineering Manager 於保 俊
Engineering Manager 牧内 大輔
於保 俊(おほ すぐる)
FB 於保 俊(suguruoho)Twitter @ohomagicgithub oho-sugu
モバイルオンラインゲーム開発
PHP/JavaBZip2途中から解凍
何でも屋
git抵抗勢力→gitすげぇ
自己紹介
牧内 大輔(まきうち だいすけ)
FB 牧内大輔
Twitter @makki_dgithub makiuchi-d (makki_d)
モバイルオンラインゲーム開発
画像合成ライブラリ KGDC/C++/PHP国内SNSのトラブル対策要員
社内WARUDAKUMI同盟
今日のおはなし
1. SVN2github その歴史(ダイジェスト版)
2. いっぱいリポジトリあって大変!
3. metahubの紹介
● はじまりはSVN(有史以前はCVS?)○ intra(社内)→cloud(AWS) 置いてある場所を変えた
● bazzarの普及 SVNに近い使い勝手のDVCSとして
○ 案件サーバー上にリポジトリ
● リポジトリ管理体制の構築とgit+githubの導入○ 案件リポジトリを一箇所にまとめよう
○ git+github使いたい
● bitbucketとgithubの蜜月 ←今ここから~
● githubからgithub:Enterpriseへ ←ここら辺
metahub前夜 ―KLabでのDVCS導入―
現状:増える、リポジトリ(github上)
課題:増える、レビュー要請
僕達=Engineering Manager=案件横断で社内の技術的なサポート・意思決定
偉い人「全案件、ちゃんと”レビュー”しといてね!」
github推進派「ソーシャルコーディングならレビュー
がちゃんとできるよ!」
こんだけあったら無理だろjk
気を取り直して・・・
分析:KLabのリポジトリの特徴
● 結構案件数多い
● 案件間の差異が比較的少ない
● ベースとしているFWはほぼ同じ
→似かよったリポジトリがいっぱい
考察:なんか、自動化できないかな
ヤバいコードって、パターンあるよね
● typoとか・・・
● インジェクションされそうなSQLの組立とか
● ORDER BY RAND()だったり
● フレームワークのコアに手を入れてたり
● 呼んじゃいけないメソッド呼んでたり
考察:PullRequestをフィルタリングしよう
githubのPullRequestを監視したらいいんじゃね?
● PRがレビューしやすい粒度
● PRのクローラ作って、パターンマッチで検出・フィルタリング
● レビューによるソースコードの品質の維持
metahub
と、いうわけで
作ってみました
githubにはAPIがあるらしい
● APIでできること (http://developer.github.com/v3/)○ commit, tagの取得・作成
○ Issueの作成・取得・変更
○ PullRequestの作成・取得・編集・マージ
○ 各種コメントの作成・取得・編集
○ User・Organizationの管理
○ Issue・Repository・Userなどの検索
○ などなど
→わりとなんでもできる
とりあえずたたいてみた
HTTPSでアクセスするだけ● Privateなリポジトリもaccess_tokenを付ければOK
$ curl https://api.github.com/repos/KLab/metahub/pulls?access_token=********************[ { "url": "https://api.github.com/repos/KLab/metahub/pulls/1", "id": 4709109, "html_url": "https://github.com/KLab/metahub/pull/1", "diff_url": "https://github.com/KLab/metahub/pull/1.diff", "patch_url": "https://github.com/KLab/metahub/pull/1.patch", "issue_url": "https://github.com/KLab/metahub/issues/1", "number": 1, "state": "open", "title": "pull requestの内容表示ページ ", "user": { "login": "makiuchi-d", ......
あとは作るだけ
1. APIでPullRequest取得
2. パターンマッチして蓄積
3. まとめて表示
こんなバグが釣れた!
よくあるtypo
× regist○ register
よくあるtypo
× ture○ true
よくあるtypo
× peoole○ people
typo以外にも......
パターン: "WHERE" の後ろに変数
レビュー:
SQLインジェクション
typo以外にも......
パターン: Slave DBへの接続コード
レビュー:
Slaveの値でMaster更新
今日も続々と釣り上げ中......
最後に
gitもgithubも強力で便利です
githubにはAPIもあります
工夫次第でもっと便利に!
もっと詳しく
KLab若手エンジニアブログ
http://young.blog.jp.klab.com/
githubにて公開中
https://github.com/KLab/metahub
ついでに宣伝
DSAS開発者の部屋
gitでバイナリファイルを
気軽に扱えるフィルターを作りました@methane
http://dsas.blog.klab.org/archives/52105107.html
ご清聴ありがとうございました