GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

gitpython-developers

GitPython – GitPythonは、Gitリポジトリと対話するためのPythonライブラリ

投稿日:

GitPythonは、Gitリポジトリと対話するためのPythonライブラリです。 http://gitpython.readthedocs.org

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
      • 遭遇したスタックトレース(該当する場合)
      • 問題を再現できるほどの情報

新しいリリースを作る方法

  • 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を適切な状態に戻すための十分な動機付けが必要です。

  • オープンプル要求なし
  • バグを記述した未解決の問題はありません







-gitpython-developers

執筆者: