perforceのsubmmitをhookして通知させる
エンジニアの皆様におかれましてはgit最高という世界なのかもしれませんが, UE4やUnityなどを扱っていると, 正直gitはしんどいなぁというのがありまして, AlienBrain使いたいなぁと指を加えながらperforceを利用しているわけです.
さて, 個人で開発しているとあまり必要でもないのですが, ある程度の人数で開発しようとすると, 誰かのsubmmitを通知してくれるような何かが欲しくなると思います. perforceではトリガーテーブルを適切に設定する事でsubmmit時に通知を飛ばせるようになります.
p4 describe
まずは通知の内容を取得できるようにします.
perforceのコマンド, p4 describe を利用すると, あるchangelistの詳細を取得できます.
>p4 describe -s 1 ## オプション-sにchangelistの番号を渡すとそのchangelistの詳細が取得できる Change 1 by [user]@[workspace] on 2015/01/01 00:00:00 submmit時に記載したコメント Affected files ... ... //depot/... ## 変更のあったファイルのリスト
これで通知する情報を取得できるようになりました.
p4 triggers
perforceでsubmmit時になにかを通知する場合, p4 triggersというコマンドでトリガーを設定します. ただしこのコマンドはperforceのsuper userでないと実行できません. このコマンドを叩くとトリガーを設定するためのファイルが開かれます. ここでトリガーテーブルと呼ばれるトリガー情報を設定します. トリガーテーブルの項目は, そのトリガーの名称, トリガータイプ, トリガーの対象となるディポ内のパス, 実行コマンドの4つです.
例えば, idobataのroomへsubmmit結果を通知するスクリプト(submmit2idobata.sh)を作成し, それを実行するようにする場合,
#!/bin/sh curl --data-urlencode "source=`p4 describe $1`" https://idobata.io/hook/custom/[token]
上記のようなスクリプトをsubmmit2idobata.shとして保存し,
>p4 triggers
を実行. トリガーテーブルに以下のように記載して保存します.
Triggers: idobatahook change-commit //depot/... "submmit2idobata.sh %change%"
これで, 誰かがp4にsubmmitする度にidobataのroomにsubmmitの内容が通知されるようになりました.
その他
p4の各コマンドの詳細はp4のマニュアルを参照してください.