12

私は何時間もこれに取り組んできましたが、私は近づいていると感じていますが、これを理解できないようです.

Git リポジトリを取得し、そのリポジトリ内のサブモジュールを指定されたバージョンに更新し、その変更をコミットするスクリプトを作成しようとしています。

機能するもの:

リポジトリを見つけ、サブモジュールを取得し、必要なコミットをチェックアウトできます。

機能しないもの:

更新されたサブモジュールのハッシュを追加できないように見えるので、コミットできます。

私のコード:

repos = Repo('path/to/repos')
submodule = repos.submodule('submodule-name')
submodule.module().git.checkout('wanted commit')

diff = repos.index.diff(None)

この時点で、サブモジュールの変更を確認できます。ソースツリーを確認すると、「ステージングされていないファイル」に変更されたサブモジュールが表示されます。問題は、コミットできるように変更をステージングする方法がわからないということです。

私が試したこと:

  • を使用してコミットするrepos.index.commit('')と、空のコミットが作成されます。
  • を使用してサブモジュールのパスを追加しようとすると、サブモジュールrepos.index.add([submodule.path])内のすべてのファイルがリポジトリに追加されますが、これは明らかに私が望むものではありません。
  • を使用してサブモジュール自体を追加しようとしても(ドキュメントによれば可能であるはずです)repos.index.add([submodule])、何も起こらないようです。
4

1 に答える 1