1

ラッパーと、その中にrepo約数十の異なる git リポジトリがあります。

後で次の方法で適用/使用できるパッチが 1 つ必要です。

変更されたすべてのサブモジュールでこのコマンドを実行したいと思います。

git checkout -b all_sub_branch
git commit -a all_submodules
git format-patch all_submodules aaa.patch
git apply aaa.patch
4

1 に答える 1

1

プレーンなバニラ git の回答 (サブモジュールを使用):

各サブモジュールに対して行われるこの種のプロセスは、次の方法で開始できます。

git submodule foreach [--recursive] ...

「...」は、すべてのコマンドを含む git エイリアスを参照します。

git submoduleマンページから:

foreach

チェックアウトされた各サブモジュールで任意のシェル コマンドを評価します。
このコマンドは、変数$name$path$sha1およびにアクセスでき$toplevelます。

  • $nameの関連するサブモジュール セクションの名前です.gitmodules
  • $pathスーパープロジェクトに関連するサブモジュールディレクトリの名前です。
  • $sha1スーパープロジェクトに記録されたコミットであり、
  • $toplevelスーパープロジェクトの最上位への絶対パスです。

スーパープロジェクトで定義されているがチェックアウトされていないサブモジュールは、このコマンドによって無視されます。
指定しない限り、コマンドを評価する前に各サブモジュールの名前を出力します--quiet。 が指定されている場合、サブモジュールは再帰的にトラバースされます (つまり、指定されたシェル コマンドは、ネストされたサブモジュールでも評価されます)。foreach
--recursive


問題は、androidrepoラッパー コマンドが独自の方法で git サブモジュールが行うことを行うことです。
したがって、同等のものは次のgit submodule foreachようになります: repo forall、例:

repo forall -c 'git status'

于 2013-01-30T08:01:52.433 に答える