Github: https://github.com/gitpython-developers/GitPython
GitPython
GitPythonは、gitリポジトリ、git-porcelainのような高レベル、またはgit-plumbingのような低レベルとやりとりするために使用されるpythonライブラリです。
リポジトリデータに簡単にアクセスできるようにgitオブジェクトの抽象化を提供します。さらに、純粋なpython実装、またはより高速でリソース集約的なgitコマンド実装を使用して、gitリポジトリに直接アクセスできます。
オブジェクトデータベースの実装は、大量のオブジェクトや大規模なデータセットを処理するために最適化されています。これは、低レベルの構造とデータストリーミングを使用して実現されます。
要件
GitPythonはgit
実行可能ファイルがシステムにインストールされ、ほとんどの操作でPATH
に利用可能である必要があります。 あなたのPATH
になければ、 GIT_PYTHON_GIT_EXECUTABLE=<path/to/git>
環境変数を設定することでGitPythonがそれを見つけるのを助けることができます。
- Git(1.7.x以降)
- Python 2.7〜3.6。
依存関係のリストは、. ./requirements.txt
と./test-requirements.txt
リストされています。 インストーラーがそれらをインストールします。
インストール
ソースコードをダウンロードした場合:
python setup.py install
またはPypiリポジトリからコピーを取得する場合は、次のようにします。
pip install GitPython
どちらのコマンドも、必要なパッケージ依存関係をインストールします。
配布パッケージは、次の場所に手動でインストールできます。
http://pypi.python.org/pypi/GitPython
ソースからクローンを作成したい場合は、次のようにすることができます。
git clone https://github.com/gitpython-developers/GitPython
git submodule update --init --recursive
./init-tests-after-clone.sh
制限事項
システムリソースのリーク
GitPythonは、システムリソースを漏らす傾向があるため、デーモンなどの長期実行プロセスには適していません。 これは、デストラクタ( __del__
メソッドで実装されている)が依然として__del__
的に実行されていた時点で記述されています。
そのようなコンテキストでそれを使いたい場合は、コードベースで__del__
実装を検索し、適切に見えるように呼び出すことができます。
適切なリソースのクリーンアップを保証する別の方法は、GitPythonを別のプロセスに分解して定期的に削除することです。
Windowsのサポート
Windowsでは 、 Appveyor CIで定期的にテストを行いますが 、すべてのテストケースが合格するわけではありません。 問題#525を調べることで改善することができます。
ランニングテスト
重要 :このリポジトリを複製した./init-tests-after-clone.sh
に、リポジトリルートに./init-tests-after-clone.sh
スクリプトを実行してください。 そうしないと、テストの失敗が発生します。
Windowsでは 、PATHにgit-daemon
があることを確認してください。 MINGW-gitでは、 Git\mingw64\libexec\git-core\
ます。 CYGWINにはデーモンはありませんが、MINGWにはうまくいくはずです。
テストを実行する最も簡単な方法は、 virtualenvの周りにwrapperを使用することです。 適切な依存関係がインストールされた環境をセットアップし、テストコマンドを実行します。 簡単にインストールするには:
pip install tox
次に、
tox
より細かい制御のために、 nose
を使用することができます。
貢献
貢献ファイルを見てください。
インフラ
- ユーザマニュアル
- 質問と回答
- stackoverflowに投稿し、
gitpython
タグを使用してください - 課題トラッカー
- 再現性のあるバグや機能要求を新しい問題として投稿する。 バグを投稿する場合は、必ず次の情報を提供してください。
- GitPythonのバージョン(例えば、
import git; git.__version__
) - Pythonのバージョン(例えば
python --version
) - 遭遇したスタックトレース(該当する場合)
- 問題を再現できるほどの情報
- GitPythonのバージョン(例えば、
- 再現性のあるバグや機能要求を新しい問題として投稿する。 バグを投稿する場合は、必ず次の情報を提供してください。
新しいリリースを作る方法
-
VERSION
ファイルのバージョンを更新/確認する - 更新ログが更新されたことを更新/検証する
- すべてをコミットする
-
git tag -s <version>
を実行します -
make release
実行make release
- 最後に、
VERSION
ファイルに次のバージョンを設定します。通常、パッチレベルをインクリメントします。おそらく-dev
を追加し-dev
。 おそらくもう一度git push
たいと思うでしょう。
リリースを確認する方法
それぞれのソースtarballを確認できるのは、 pypi
リリースのみを使用してください。
このスクリプトは、このプロジェクトの作成者が実際に作成したtarballを確認する方法を示しています。
curl https://pypi.python.org/packages/5b/38/0433c06feebbfbb51d644129dbe334031c33d55af0524326266f847ae907/GitPython-2.1.8-py2.py3-none-any.whl#md5=6b73ae86ee2dbab6da8652b2d875013a > gitpython.whl
curl https://pypi.python.org/packages/5b/38/0433c06feebbfbb51d644129dbe334031c33d55af0524326266f847ae907/GitPython-2.1.8-py2.py3-none-any.whl.asc > gitpython-signature.asc
gpg --verify gitpython-signature.asc gitpython.whl
どの出力
gpg: Signature made Mon Dec 11 17:34:17 2017 CET
gpg: using RSA key C3BC52BD76E2C23BAC6EC06A665F99FA9D99966C
gpg: issuer "byronimo@gmail.com"
gpg: Good signature from "Sebastian Thiel (I do trust in Rust!) <byronimo@gmail.com>" [ultimate]
キーの詳細を確認することで、keyidが実際にこのリポジトリに用意されているリリース署名鍵と一致することを確認できます。
gpg --list-packets ./release-verification-key.asc
それを追加するコミットが署名されたことを確認するには、次のようにします。
git show --show-signature ./release-verification-key.asc
あなたが永久にそれを信用したいなら、あなたはそれをインポートし、署名することができます:
gpg --import ./release-verification-key.asc
gpg --edit-key 88710E60
> sign
> save
ライセンス
新しいBSDライセンス。 LICENSEファイルを参照してください。
開発状況
git-pythonを適切な状態に戻すための十分な動機付けが必要です。
- オープンプル要求なし
- バグを記述した未解決の問題はありません