読者です 読者をやめる 読者になる 読者になる

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のマニュアルを参照してください.