私は何時間もこれに取り組んできましたが、私は近づいていると感じていますが、これを理解できないようです.
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])
、何も起こらないようです。