Rock'n'Hack ブログ

それなりハッカーを目指して、もろもろのメモ。bloggerから引っ越しました。

git : 全てのブランチをpullするワンライナー

すごく久々の投稿。

とりあえずコマンドを先に。

for branch in `git branch -r | grep -v HEAD | awk -F'/' '{print $2}'`; do git checkout $branch; git pull; done
※環境によって微妙に異なるかもしれません。

経緯は以下。

とある仕事で、Jenkinsをジョブサーバ的に使っています。
ソースは各々のジョブが、 github から同一リポジトリを clone してバッチを走らせる、という感じ。

ただ、割と頻繁に github からの clone にしくってジョブがこける。。
たいていは手動でリトライしたりすればオッケーなわけだけど、ヒヤヒヤするのでどうにかしたい。

そこで、バッチのコードに変更があった時だけ、github から clone するジョブを作って、
他のジョブは、そのジョブのworkspaceをリポジトリとして参照する、という運用にしてます。

これで万事オッケー、というはずだったのですが、参照するジョブ側で master 以外のブランチを
設定すると、そんなブランチはないよ、っていうことで、clone時に同じくこける。

そもそも参照される方では master しか取ってきてないので確かに言う通り。
ということで、clone 後に全ての branch を pull することにした。

その bash ワンライナーが冒頭のもの。

これで逐次全てのブランチを pull するので、他のジョブから branch 指定で
clone されても安心、となりました。
(…なんかそもそもの指針が微妙な気がしないでもない。)

おしまい。