問題タブ [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でリモートブランチをチェックアウトまたは一覧表示します
このモジュールにリモート/ローカルブランチをチェックアウトまたは一覧表示するオプションが表示されません:https ://gitpython.readthedocs.io/en/stable/
git - ベアリポジトリにインデックスを付けることはできますか?これはバグですか?
GitPython0.3でファイルをリポジトリにコミットしようとしています。大まかに、私はこれを次のように行っています:
非ベアリポジトリでは、これは期待どおりに機能します。私はファイルシステムに明示的に触れているのではなく、Gitのオブジェクトデータベースだけに触れていることに注意してください。
ただし、ベアリポジトリでは、これは機能しません。IndexFile.add
関数はgit_working_dir
デコレータで装飾されています。
working_tree_dir
このデコレータは、パス参照を正しく解決できるように、リポジトリにchdirしようとします。ただし、working_tree_dir
ベアリポジトリには無効であり、を発生させますAssertionError
。
このデコレータがなぜここにあるのか誰かが知っていますか?パスを解決するためだけですか、それともベアリポジトリにインデックスを作成することは不可能ですか?これはGitPythonのバグですか、それともGitの私の理解のバグですか?
編集:同様に、IndexFile.remove
関数は(default_index
デコレータを介して)デフォルトのインデックスであることを表明します。ベアリポジトリには確かにデフォルトのインデックスがありませんが、インデックスオブジェクトをまったく持つことはできませんか?
python - ワーカー スレッドから Python 非同期モジュールをインポートする方法は?
GitPython パッケージを使用して、Python から Git リポジトリにアクセスしています。これにより、async パッケージが取り込まれます。ではasync/__init__.py
、次のことが起こります。
すべてがメインスレッドにある場合、これは正常に機能します。ただし、git
(したがってasync
) の最初のインポートが別のスレッドで発生すると、事態は急上昇します。
これらはすべて Django フレームワーク内で実行されるため、スレッドを制御することはできません。
私が見つけた 1 つの回避策は、(明らかに) メイン スレッドにインポートされている に配置import async
することです。settings.py
ただし、これはインストールごとに行う必要があるため、私の Django アプリのユーザーにとってはあまり良いことではありません。
例外をキャッチしようとしましたが、例外が発生したインポートが完全に完了していないため、次import async
も失敗します。
この問題を回避/ハッキングする中途半端な方法を考えられますか?
signal
更新: Apache の mod_wsgi は呼び出しを無視するほど賢いことに気付きました:
ただし、Django 開発サーバーには問題が残っています。
python - Python os.getlogin の問題
次のようなファイルを作成した場合:
cronで実行すると、例外が発生します
シェルで手動で実行すると、動作します。
問題は、 commit() の GitPython 0.3.1 がこの関数を使用しており、それを使用する必要があることです。
回避策はありますか?
Ubuntu10.10/python2.6.6 および Debian5.0.6/python2.5.2 でテストしました。
python - Git Python コミットが見つかりません
コミット ツリーをナビゲートしても、タグが指すコミットを見つけることができません。この特定の例では、Github から直接複製した Tornado Web リポジトリを使用しています。
これは、git の直接非巡回グラフですべてのコミットを見つけることを想定していますが、再帰関数を使用して DAG を再帰的にナビゲートする別のアプローチを試したところ、同じ結果が得られました。
この問題を回避するにはどうすればよいですか? どんな助けでも大歓迎です!
私はgit-python v0.3.1を使用しています。
python - サーバーへのプッシュ時にすべてのコミットを取得する
コミット メッセージを Twitter に投稿するための git post-commit フックを作成しています。サーバーにフックを設定しました。これは、 を呼び出したときにのみ実行されることを意味しますgit push
。
Python から git とやり取りするために、私はGitPythonを使用しています。私のコードではrepo.head.commit.message
、最新のコミット メッセージを取得するために使用しています。つまり、複数のコミットをプッシュすると、最後のコミットのみが取得されます。
これは私がこれまでに持っているものです。
プッシュからすべてのコミットを取得するにはどうすればよいですか? または、プッシュされたコミットの数を取得するにはどうすればよいですか?
repo.iter_commits('master', max_count=5)
好きなだけコミットを取得できるので、コミットの数がわかっていればそれを使用できます。
編集:私はテストしていましたが、実行するgit push
と、このフックはプッシュしたばかりのコミットではなく、最後のコミットからヘッドを取得するようです。サーバーにプッシュしたばかりのコミットからメッセージを取得するコミット後フックを作成するにはどうすればよいですか?
EDIT 2 :私は実際に post-commit フックではなく update フックを使用していますが、それはサーバーで使用する正しいフックですか?
python - GItPython を使用してローカルの変更をファイルに戻す
GitPythonライブラリの下に、ローカルの変更を単一のファイルに戻す方法はありますか?
Git コマンドラインの下では、私はただ使用しますgit checkout filename
が、GitPython API の下でこれを実行しようとしています。
次のエラーが発生します。
git.exc.CheckoutError:一部のファイルは、ローカルの変更によりインデックスからチェックアウトできませんでした:['foo']
python - GitPython: まだ適用されていないリモート コミットのリストを取得する
操作によって適用されようとしているコミットのリストを取得する Python スクリプトを作成していgit pull
ます。優れたGitPython ライブラリは、開始するのに最適なベースですが、git の微妙な内部動作が私を悩ませています。さて、これが私が現時点で持っているものです(簡略化された注釈付きバージョン):
基本的に、次の で適用されるすべてのコミットの作成者を取得しgit pull
ます。これはうまく機能していますが、次の問題があります。
- ローカル コミットがリモート コミットより先にある場合、私のコードはすべてのコミットを最初に出力します。
- リモート コミットは複数の親を持つことができ、ローカル コミットは 2 番目の親になることができます。これは、私のコードがリモート リポジトリでローカル コミットを見つけられないことを意味します。
ローカルリポジトリの背後にあるリモートリポジトリに対処できます。同時に反対方向(ローカルからリモート)を見ると、コードが乱雑になりますが、機能します。しかし、この最後の問題は私を殺しています: ローカル コミットに一致するものを見つけるために、(潜在的に無制限の) ツリーをナビゲートする必要があります。これは単なる理論的なものではありません。私の最新の変更は、まさにこの問題を引き起こすレポ マージであったため、スクリプトが機能していません。
ローカル リポジトリの場合のように、リモート リポジトリでコミットの順序付きリストを取得するrepo.iter_commits()
と、非常に役立ちます。しかし、私はドキュメントでそれを行う方法を見つけていません。リモート リポジトリの Repo オブジェクトを取得できますか?
そこに到達する可能性のある別のアプローチはありますか?ハンマーを使用してネジを釘付けにしていますか?
python - Pythonは環境変数を取得しませんが、Mac OSで設定されています
env コマンドを実行すると、次の出力が得られます。
私はPythonでGIT_PYTHON_GIT_EXECUTABLE変数を取得しようとしています:
しかし出力印刷:
GIT_PYTHON_GIT_EXECUTABLE 変数が表示されないようです。どうしたの?
アップデート
私はpycharmで環境変数を設定し、それを読みましたが、実際のアプリケーションではpyqtライブラリのQThreadクラスを使用しています。私のアプリケーションは、起動時にpyqtライブラリの上に構築され、Qthreadを実行します。Qthread では、gitpython 関数を実行します。GitPython 関数はサブプロセスを開始し、GIT_PYTHON_GIT_EXECUTABLE を読み取ろうとしますが、変数を読み取れません。
python - git log --follow, gitpython のやり方
次のように、単一のファイルのコミット履歴にアクセスしようとしています:
gitpythonを使用する必要があるため、現在行っていることは次のとおりです。
次に、コミット オブジェクトを作成します。
よりgitpython-icな方法でそれを行う方法はありますか? commit.iter_parents()
と の両方を試しましcommit.iter_items()
たが、どちらも に依存しているため、選択肢git-rev-list
がありません。--follow