273 lines
9.1 KiB
ReStructuredText
273 lines
9.1 KiB
ReStructuredText
######################################################################
|
|
pygit2 - libgit2 bindings in Python
|
|
######################################################################
|
|
|
|
.. image:: https://secure.travis-ci.org/libgit2/pygit2.png
|
|
:target: http://travis-ci.org/libgit2/pygit2
|
|
|
|
Pygit2 is a set of Python bindings to the libgit2 shared library, libgit2
|
|
implements the core of Git. Pygit2 works with Python 2.6, 2.7, 3.1, 3.2 and
|
|
3.3
|
|
|
|
Pygit2 links:
|
|
|
|
- http://github.com/libgit2/pygit2 -- Source code and issue tracker
|
|
- http://www.pygit2.org/ -- Documentation
|
|
- http://pypi.python.org/pypi/pygit2 -- Download
|
|
|
|
|
|
Quick install guide
|
|
===================
|
|
|
|
1. Checkout the libgit2 stable branch::
|
|
|
|
$ git clone git://github.com/libgit2/libgit2.git -b master
|
|
|
|
2. Build and install libgit2
|
|
https://github.com/libgit2/libgit2/#building-libgit2---using-cmake
|
|
|
|
3. Install pygit2 with *pip*::
|
|
|
|
$ pip install pygit2
|
|
|
|
For detailed instructions check the documentation,
|
|
http://www.pygit2.org/install.html
|
|
|
|
|
|
Contributing
|
|
============
|
|
|
|
Fork libgit2/pygit2 on GitHub, make it awesomer (preferably in a branch named
|
|
for the topic), send a pull request.
|
|
|
|
|
|
Authors
|
|
==============
|
|
|
|
57 developers have contributed at least 1 commit to pygit2::
|
|
|
|
J. David Ibáñez Brodie Rao Adam Spiers
|
|
Nico von Geyso David Versmisse Alexander Bayandin
|
|
Carlos Martín Nieto Rémi Duraffort Andrew Chin
|
|
W. Trevor King Sebastian Thiel András Veres-Szentkirályi
|
|
Dave Borowitz Fraser Tweedale Benjamin Kircher
|
|
Daniel Rodríguez Troitiño Han-Wen Nienhuys Benjamin Pollack
|
|
Richo Healey Petr Viktorin Bryan O'Sullivan
|
|
Christian Boos Alex Chamberlain David Fischer
|
|
Julien Miotte Amit Bakshi David Sanders
|
|
Xu Tao Andrey Devyatkin Eric Davis
|
|
Jose Plana Ben Davis Erik van Zijst
|
|
Martin Lenders Eric Schrijver Ferengee
|
|
Petr Hosek Hervé Cauwelier Gustavo Di Pietro
|
|
Victor Garcia Huang Huang Hugh Cole-Baker
|
|
Xavier Delannoy Jared Flatow Josh Bleecher Snyder
|
|
Yonggang Luo Jiunn Haur Lim Jun Omae
|
|
Valentin Haenel Sarath Lakshman Óscar San José
|
|
Bernardo Heynemann Vicent Marti Ridge Kennedy
|
|
John Szakmeister Zoran Zaric Rui Abreu Ferreira
|
|
|
|
|
|
Changelog
|
|
==============
|
|
|
|
0.20.2 (2014-02-04)
|
|
-------------------
|
|
|
|
- Support pypy
|
|
`#209 <https://github.com/libgit2/pygit2/issues/209>`_
|
|
`#327 <https://github.com/libgit2/pygit2/pull/327>`_
|
|
`#333 <https://github.com/libgit2/pygit2/pull/333>`_
|
|
|
|
Repository:
|
|
|
|
- New ``Repository.default_signature``
|
|
`#310 <https://github.com/libgit2/pygit2/pull/310>`_
|
|
|
|
Oid:
|
|
|
|
- New ``str(Oid)`` deprecates ``Oid.hex``
|
|
`#322 <https://github.com/libgit2/pygit2/pull/322>`_
|
|
|
|
Object:
|
|
|
|
- New ``Object.id`` deprecates ``Object.oid``
|
|
`#322 <https://github.com/libgit2/pygit2/pull/322>`_
|
|
|
|
- New ``TreeEntry.id`` deprecates ``TreeEntry.oid``
|
|
`#322 <https://github.com/libgit2/pygit2/pull/322>`_
|
|
|
|
- New ``Blob.diff(...)`` and ``Blob.diff_to_buffer(...)``
|
|
`#307 <https://github.com/libgit2/pygit2/pull/307>`_
|
|
|
|
- New ``Commit.tree_id`` and ``Commit.parent_ids``
|
|
`#73 <https://github.com/libgit2/pygit2/issues/73>`_
|
|
`#311 <https://github.com/libgit2/pygit2/pull/311>`_
|
|
|
|
- New rich comparison between tree entries
|
|
`#305 <https://github.com/libgit2/pygit2/issues/305>`_
|
|
`#313 <https://github.com/libgit2/pygit2/pull/313>`_
|
|
|
|
- Now ``Tree.__contains__(key)`` supports paths
|
|
`#306 <https://github.com/libgit2/pygit2/issues/306>`_
|
|
`#316 <https://github.com/libgit2/pygit2/pull/316>`_
|
|
|
|
Index:
|
|
|
|
- Now possible to create ``IndexEntry(...)``
|
|
`#325 <https://github.com/libgit2/pygit2/pull/325>`_
|
|
|
|
- Now ``IndexEntry.path``, ``IndexEntry.oid`` and ``IndexEntry.mode`` are
|
|
writable
|
|
`#325 <https://github.com/libgit2/pygit2/pull/325>`_
|
|
|
|
- Now ``Index.add(...)`` accepts an ``IndexEntry`` too
|
|
`#325 <https://github.com/libgit2/pygit2/pull/325>`_
|
|
|
|
- Now ``Index.write_tree(...)`` is able to write to a different repository
|
|
`#325 <https://github.com/libgit2/pygit2/pull/325>`_
|
|
|
|
- Fix memory leak in ``IndexEntry.path`` setter
|
|
`#335 <https://github.com/libgit2/pygit2/pull/335>`_
|
|
|
|
Config:
|
|
|
|
- New ``Config`` iterator replaces ``Config.foreach``
|
|
`#183 <https://github.com/libgit2/pygit2/issues/183>`_
|
|
`#312 <https://github.com/libgit2/pygit2/pull/312>`_
|
|
|
|
Remote:
|
|
|
|
- New type ``Refspec``
|
|
`#314 <https://github.com/libgit2/pygit2/pull/314>`_
|
|
|
|
- New ``Remote.push_url``
|
|
`#315 <https://github.com/libgit2/pygit2/pull/314>`_
|
|
|
|
- New ``Remote.add_push`` and ``Remote.add_fetch``
|
|
`#255 <https://github.com/libgit2/pygit2/issues/255>`_
|
|
`#318 <https://github.com/libgit2/pygit2/pull/318>`_
|
|
|
|
- New ``Remote.fetch_refspecs`` replaces ``Remote.get_fetch_refspecs()`` and
|
|
``Remote.set_fetch_refspecs(...)``
|
|
`#319 <https://github.com/libgit2/pygit2/pull/319>`_
|
|
|
|
- New ``Remote.push_refspecs`` replaces ``Remote.get_push_refspecs()`` and
|
|
``Remote.set_push_refspecs(...)``
|
|
`#319 <https://github.com/libgit2/pygit2/pull/319>`_
|
|
|
|
- New ``Remote.progress``, ``Remote.transfer_progress`` and
|
|
``Remote.update_tips``
|
|
`#274 <https://github.com/libgit2/pygit2/issues/274>`_
|
|
`#324 <https://github.com/libgit2/pygit2/pull/324>`_
|
|
|
|
- New type ``TransferProgress``
|
|
`#274 <https://github.com/libgit2/pygit2/issues/274>`_
|
|
`#324 <https://github.com/libgit2/pygit2/pull/324>`_
|
|
|
|
- Fix refcount leak in ``Repository.remotes``
|
|
`#321 <https://github.com/libgit2/pygit2/issues/321>`_
|
|
`#332 <https://github.com/libgit2/pygit2/pull/332>`_
|
|
|
|
Other: `#331 <https://github.com/libgit2/pygit2/pull/331>`_
|
|
|
|
|
|
0.20.1 (2013-12-24)
|
|
-------------------
|
|
|
|
- New remote ref-specs API:
|
|
`#290 <https://github.com/libgit2/pygit2/pull/290>`_
|
|
|
|
- New ``Repository.reset(...)``:
|
|
`#292 <https://github.com/libgit2/pygit2/pull/292>`_,
|
|
`#294 <https://github.com/libgit2/pygit2/pull/294>`_
|
|
|
|
- Export ``GIT_DIFF_MINIMAL``:
|
|
`#293 <https://github.com/libgit2/pygit2/pull/293>`_
|
|
|
|
- New ``Repository.merge(...)``:
|
|
`#295 <https://github.com/libgit2/pygit2/pull/295>`_
|
|
|
|
- Fix ``Repository.blame`` argument handling:
|
|
`#297 <https://github.com/libgit2/pygit2/pull/297>`_
|
|
|
|
- Fix build error on Windows:
|
|
`#298 <https://github.com/libgit2/pygit2/pull/298>`_
|
|
|
|
- Fix typo in the README file, Blog → Blob:
|
|
`#301 <https://github.com/libgit2/pygit2/pull/301>`_
|
|
|
|
- Now ``Diff.patch`` returns ``None`` if no patch:
|
|
`#232 <https://github.com/libgit2/pygit2/pull/232>`_,
|
|
`#303 <https://github.com/libgit2/pygit2/pull/303>`_
|
|
|
|
- New ``Walker.simplify_first_parent()``:
|
|
`#304 <https://github.com/libgit2/pygit2/pull/304>`_
|
|
|
|
0.20.0 (2013-11-24)
|
|
-------------------
|
|
|
|
- Upgrade to libgit2 v0.20.0:
|
|
`#288 <https://github.com/libgit2/pygit2/pull/288>`_
|
|
|
|
- New ``Repository.head_is_unborn`` replaces ``Repository.head_is_orphaned``
|
|
|
|
- Changed ``pygit2.clone_repository(...)``. Drop ``push_url``, ``fetch_spec``
|
|
and ``push_spec`` parameters. Add ``ignore_cert_errors``.
|
|
|
|
- New ``Patch.additions`` and ``Patch.deletions``:
|
|
`#275 <https://github.com/libgit2/pygit2/pull/275>`_
|
|
|
|
- New ``Patch.is_binary``:
|
|
`#276 <https://github.com/libgit2/pygit2/pull/276>`_
|
|
|
|
- New ``Reference.log_append(...)``:
|
|
`#277 <https://github.com/libgit2/pygit2/pull/277>`_
|
|
|
|
- New ``Blob.is_binary``:
|
|
`#278 <https://github.com/libgit2/pygit2/pull/278>`_
|
|
|
|
- New ``len(Diff)`` shows the number of patches:
|
|
`#281 <https://github.com/libgit2/pygit2/pull/281>`_
|
|
|
|
- Rewrite ``Repository.status()``:
|
|
`#283 <https://github.com/libgit2/pygit2/pull/283>`_
|
|
|
|
- New ``Reference.shorthand``:
|
|
`#284 <https://github.com/libgit2/pygit2/pull/284>`_
|
|
|
|
- New ``Repository.blame(...)``:
|
|
`#285 <https://github.com/libgit2/pygit2/pull/285>`_
|
|
|
|
- Now ``Repository.listall_references()`` and
|
|
``Repository.listall_branches()`` return a list, not a tuple:
|
|
`#289 <https://github.com/libgit2/pygit2/pull/289>`_
|
|
|
|
|
|
License
|
|
==============
|
|
|
|
**GPLv2 with linking exception.**
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License,
|
|
version 2, as published by the Free Software Foundation.
|
|
|
|
In addition to the permissions in the GNU General Public License,
|
|
the authors give you unlimited permission to link the compiled
|
|
version of this file into combinations with other programs,
|
|
and to distribute those combinations without any restriction
|
|
coming from the use of this file. (The General Public License
|
|
restrictions do apply in other respects; for example, they cover
|
|
modification of the file, and distribution when not linked into
|
|
a combined executable.)
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; see the file COPYING. If not, write to
|
|
the Free Software Foundation, 51 Franklin Street, Fifth Floor,
|
|
Boston, MA 02110-1301, USA.
|