kledgeb Ubuntuの使い方や日本語化、アプリの使い方を紹介しています。 Ubuntuの最新情報も紹介しています。

すべてのサブモジュールを一括処理する

  すべての「サブモジュール」を一括処理します。
  ユーザーが指定した処理を、各サブモジュールごとに実行します。

処理で利用できる変数

  処理で利用できる変数は、以下のとおりです。

変数名 内容
$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'


  5.コマンドの実行結果

    以下のように、各「サブモジュール」に対し、指定された処理が実行されます。



関連コンテンツ
同一カテゴリーの記事
コメント
オプション