すべてのサブモジュールを一括処理する
すべての「サブモジュール」を一括処理します。ユーザーが指定した処理を、各サブモジュールごとに実行します。
処理で利用できる変数
処理で利用できる変数は、以下のとおりです。変数名 | 内容 |
---|---|
$name | サブモジュール名 |
$path | サブモジュールのワーキングディレクトリーのパス (カレントディレクトリーからの相対パス) |
$sha1 | サブモジュールのコミットID |
$toplevel | スーパープロジェクトのワーキングディレクトリーのパス (絶対パス) |
処理は「eval」で実行される点に留意してください。
処理の中止について
ユーザーが指定した処理が、「0」以外の値を返した場合、そこで処理が停止します。それ以降、他の「サブモジュール」に対しても処理は行われません。
処理を続行したい場合
もしユーザーが指定した処理が「0」以外の値を返しても処理を続行したい場合、指定する処理の最後に「 ||:」を追加してください。例えば、以下のように記述します。
git submodule foreach 'git branch --all ||:'
コマンドの実行例
コマンドの実行例です。1.シェルスクリプトの用意
ここでは例として、各サブモジュールで実行するシェルスクリプトを用意しました。直接処理を記述するなら、シェルスクリプトを用意する必要はありません。
直接処理を記述する場合、処理を「'」で括って記述してください。
2.シェルスクリプトの内容
以下の内容を記述しました。#!/bin/bash echo "Current directory : `pwd`" echo "name : $1" echo "path : $2" echo "sha1 : $3" echo "toplevel : $4" echo ""
3.サブモジュールの状態
「サブモジュール」の状態を見てみます。以下のように、チェックアウトされている「サブモジュール」が2つあることが分かります。
4.コマンドの実行
「端末」から、以下のコマンドを実行します。コマンドの詳細は、「すべてのサブモジュールを一括処理するコマンドの説明」を参考にしてください。
git submodule foreach '/home/ubuntu/git/foreach.sh $name $path $sha1 $toplevel'