Skip to the content.

Git リポジトリをまとめて更新する

Git はローカルでファイルを編集して、作業が終わったらリモートにプッシュすればいいので便利なのですが、作業を始める前にリモートのファイルを Pull しておかないと矛盾が発生します。

リポジトリが一つだけならいいのですが、 CSS や Javascript を使いまわすために個別のリポジトリにおいている場合、複数のリポジトリをまたいだ作業が必要になることがよくあります。

そんなとき、いちいち複数のリポジトリを手動で Pull するのは手間なので簡単なスクリプトを書いてみました。

#!/bin/bash

files="./*"
dirary=()
for filepath in $files; do
if [ -d $filepath ] ; then
    dirary+=("$filepath")
fi
done

for i in ${dirary[@]}; do
cd $i
echo updating repository: $i
git pull
cd ..
done

上半分でカレントディレクトリ下のディレクトリ一覧を取得して、下半分でそれぞれのサブディレクトリに移動して git pull を実行して戻ってくるだけのものです。

厳密にエラー処理するならサブディレクトリが git リポジトリであるかどうか確認したり、もっと汎用性をもたせるなら更にサブディレクトリに移動していって git リポジトリを確認しつつ git pull を行うようにすればいいのですが、さすがにそこまでする気は起きませんでした。

その後サブディレクトリが git リポジトリであるかどうか判断した上で、引数に指定した git コマンドを実行する agit.sh を作りました。判断も簡易だし細かいエラー処理もしていませんが、手軽にやるならこれくらいまででしょう。