問題タブ [gitpython]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - GitPython: 更新されたサブモジュールをコミットする方法
私は何時間もこれに取り組んできましたが、私は近づいていると感じていますが、これを理解できないようです.
Git リポジトリを取得し、そのリポジトリ内のサブモジュールを指定されたバージョンに更新し、その変更をコミットするスクリプトを作成しようとしています。
機能するもの:
リポジトリを見つけ、サブモジュールを取得し、必要なコミットをチェックアウトできます。
機能しないもの:
更新されたサブモジュールのハッシュを追加できないように見えるので、コミットできます。
私のコード:
この時点で、サブモジュールの変更を確認できます。ソースツリーを確認すると、「ステージングされていないファイル」に変更されたサブモジュールが表示されます。問題は、コミットできるように変更をステージングする方法がわからないということです。
私が試したこと:
- を使用してコミットする
repos.index.commit('')
と、空のコミットが作成されます。 - を使用してサブモジュールのパスを追加しようとすると、サブモジュール
repos.index.add([submodule.path])
内のすべてのファイルがリポジトリに追加されますが、これは明らかに私が望むものではありません。 - を使用してサブモジュール自体を追加しようとしても(ドキュメントによれば可能であるはずです)
repos.index.add([submodule])
、何も起こらないようです。
git - Python を使用して Git コミット メッセージを修正するには?
以前subprocess.check_output
は Git コマンドの結果を取得していましたが、コマンドで行うコミット メッセージを更新する方法が思いつきませんgit commit -amend
。
python - gitpython で commit の短い sha を取得する
長い SHA は次のように取得できます。
または、git 3.1.7 では:
短いものはどうですか?(ショートSHA
はレポの規模で決まるので、こんなはずじゃないsha[:7]
)
python - GitPython を使用してステージングされたファイルを取得するには?
GitPythonを使用して、ステージングされたファイルを git でカウントしています。
変更されたファイルの場合、使用できます
しかし、ステージングされたファイルの場合、解決策が見つかりません。
私は知ってgit status --porcelain
いますが、より良い他の解決策を探しています。gitpython
( git コマンドを使用しないことを願っています。スクリプトはより高速になります)
python - GitPython: git.diff(commit_a, commit_b) は常に空の文字列を返します
GitPython を使用して次のコードを試すと、次のようになります。
常に空の文字列を返します。さまざまなコミットでも何度もファイルを変更しました。
最初のコミットと最後のコミットの間に変更されたすべてのファイルをリストする次のコードも試しました。
python - GitPython のクローン/プル関数の単体テストを作成するには?
リモート Git リポジトリに対してクローンおよびプル機能を実行するために GitPython を使用している Python プロジェクトがあります。
簡単な例として:
この関数の単体テストを記述できるようにしたいのですが、現状では明らかに外部システムに手を差し伸べる必要があります。
Mock を使用して HTTP 呼び出しをモックアップするのと同様の方法で、この外部インタラクションをモックアップした経験がある人がいるかどうかに興味があります。実際の Git リモートを呼び出す必要なく、テスト時にモックできる方法でこれらのタスクを実行できるようにしたいと考えています。
このためのテストを作成するにはどうすればよいですか?
編集:私が求めていることをより明確にするために、私はモックを初めて使用し、クラス自体ではなくこれらのクラスのインスタンスをモックする方法を理解するのに苦労していたことに言及する必要があります。私の質問は、「モックを使用してベアのようなインスタンス固有のプロパティを設定するにはどうすればよいですか?」という行に沿って、より適切に表現されているはずです。
それ以来、私はモックについて多くのことを学び、これを行う方法を理解したので、私自身の質問に対する答えを提供します.
gitpython - gitpython で変更をステージングする方法
git commit -a
gitpythonに相当するものを知っている人はいますか?
試してみrepo.index.commit
ましたが、 -a オプションを追加する方法がわかりません。
repo.index.add
変更された既存のファイルではなく、新しいファイルのみを追加します。update
のような機能をサポートしていないようですgit add -u
。
のようなこともできrepo.git.commit('-a')
ます
しかし、私は高レベルのインターフェースがこれを行うことができるはずだと思います. 何か不足していますか?
前もって感謝します、
エバート