2012-08-14 git pushで自動でGitHubにもgit pushする
Gitは分散型のバージョン管理システムなので、リポジトリの配置に自由度がある。仕組みの上ではすべてが平等なリポジトリなので、運用でどれかをマスターにしておく必要がある。でないとどれがマスターか混乱してしまう。
ぼくは一部のリポジトリについてはGitHubに置いているリポジトリをマスターリポジトリにしていた。マスターにするだけでなく、それだけを保持して、ローカルのリポジトリを消してしまうこともあった。ただ最近「ファーストサーバ」の事故などもあって、GitHubも障害があるかもしれないし、サービス停止などもあるかと思い、ローカルにバックアップを取ることにした。
GitHubにあるリポジトリを定期的にcloneしても良いのだけれど、タイトルの通りローカルのリポジトリにpushしたときにGitHubのリポジトリにもpushするようにした。
仕組みとしてはGitのpost-updateフックを使っている。.git/hooks/post-update
にシェルスクリプトを置いておくだけだ。スクリプトの内容も単純でgit push git@github.com:bouzuya/${repos} master
するだけだ。GitHub用の公開鍵からパスフレーズを消し、自動化しても問題ないようにした。秘密鍵が漏れると大変だけど、良い方法が浮かばない。まあいいか。
16 min.