blog.bouzuya.net

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.