27 KiB
0.26.0 (2017-07-06)
- Update to libgit2 v0.26 #713
- Drop support for Python 3.2, add support for cffi 1.10 #706 #694
- New
Repository.revert_commit(...)
#711 #710 - New
Branch.is_checked_out()
#696 - Various fixes #706 #707 #708
0.25.1 (2017-04-25)
- Add suport for Python 3.6
- New support for stash: repository methods
stash
,stash_apply
,stash_drop
andstash_pop
#695 - Improved support for submodules: new repository methods
init_submodules
andupdate_submodules
#692 - New friendlier API for branches & references:
Repository.branches
andRepository.references
#700 #701 - New support for custom backends #690
- Fix
init_repository
crash on None input #688 #697 - Fix checkout with an orphan master branch #669 #685
- Better error messages for opening repositories #645 #698
0.25.0 (2016-12-26)
- Upgrade to libgit2 0.25 #670
- Now Commit.tree raises an error if tree is not found #682
- New settings.mwindow_mapped_limit, cached_memory, enable_caching, cache_max_size and cache_object_limit #677
0.24.2 (2016-11-01)
- Unit tests pass on Windows, integration with AppVeyor #641 #655 #657 #659 #660 #661 #667
- Fix when libgit2 error messages have non-ascii chars #651
- Documentation improvements #643 #653 #663
0.24.1 (2016-06-21)
- New
Repository.listall_reference_objects()
#634 - Fix
Repository.write_archive(...)
#619 #621 - Reproducible builds #636
- Documentation fixes #606 #607 #609 #623
- Test updates #629
0.24.0 (2016-03-05)
- Update to libgit2 v0.24 #594
- Support Python 3.5
- New dependency, six
- New
Repository.path_is_ignored(path)
#589 - Fix error in
Repository(path)
when path is a bytes string #588 #593 - Fix memory issue in
Repository.describe(...)
#592 #597 #599 - Allow testing with tox #600
0.23.3 (2016-01-01)
- New
Repository.create_blob_fromiobase(...)
#490 #577 - New
Repository.describe(...)
#585 - Fix
Signature
default encoding, UTF-8 now #581 - Fixing
pip install pygit2
, should install cffi first - Unit tests, fix binary diff test #586
- Document that
Diff.patch
can beNone
#587
0.23.2 (2015-10-11)
- Unify callbacks system for remotes and clone #568
- New
TreeEntry._name
#570 - Fix segfault in
Tag._message
#572 - Documentation improvements #569 #574
API changes to clone:
# Before
clone_repository(..., credentials, certificate)
# Now
callbacks = RemoteCallbacks(credentials, certificate)
clone_repository(..., callbacks)
API changes to remote:
# Before
def transfer_progress(stats):
...
remote.credentials = credentials
remote.transfer_progress = transfer_progress
remote.fetch()
remote.push(specs)
# Now
class MyCallbacks(RemoteCallbacks):
def transfer_progress(self, stats):
...
callbacks = MyCallbacks(credentials)
remote.fetch(callbacks=callbacks)
remote.push(specs, callbacks=callbacks)
0.23.1 (2015-09-26)
- Improve support for cffi 1.0+ #529 #561
- Fix
Remote.push
#557 - New
TreeEntry.type
#560 - New
pygit2.GIT_DIFF_SHOW_BINARY
#566
0.23.0 (2015-08-14)
- Update to libgit2 v0.23 #540
- Now
Repository.merge_base(...)
returnsNone
if no merge base is found #550 - Documentation updates #547
API changes:
How to set identity (aka signature) in a reflog has changed:
# Before signature = Signature('foo', 'bar') ... reference.set_target(target, signature=signature, message=message) repo.set_head(target, signature=signature) remote.fetch(signature=signature) remote.push(signature=signature) # Now repo.set_ident('foo', 'bar') ... reference.set_target(target, message=message) repo.set_head(target) remote.push() # The current identity can be get with repo.ident
Some remote setters have been replaced by methods:
# Before # Now Remote.url = url Repository.remotes.set_url(name, url) Remote.push_url = url Repository.remotes.set_push_url(name, url) Remote.add_fetch(refspec) Repository.remotes.add_fetch(name, refspec) Remote.add_push(refspec) Repository.remotes.add_push(name, refspec) Remote.fetch_refspecs = [...] removed, use the config API instead Remote.push_refspecs = [...] removed, use the config API instead
0.22.1 (2015-07-12)
Diff interface refactoring #346 (in progress):
New
iter(pygit2.Blame)
New
pygit2.DiffDelta
,pygit2.DiffFile
andpygit.DiffLine
API changes, translation table:
Hunk => DiffHunk Patch.old_file_path => Patch.delta.old_file.path Patch.new_file_path => Patch.delta.new_file.path Patch.old_id => Patch.delta.old_file.id Patch.new_id => Patch.delta.new_file.id Patch.status => Patch.delta.status Patch.similarity => Patch.delta.similarity Patch.is_binary => Patch.delta.is_binary Patch.additions => Patch.line_stats[1] Patch.deletions => Patch.line_stats[2]
DiffHunk.lines
is now a list ofDiffLine
objects, not tuples
New features:
- New
Repository.expand_id(...)
andRepository.ahead_behind(...)
#448 - New
prefix
parameter inRepository.write_archive
#481 - New
Repository.merge_trees(...)
#489 - New
Repository.cherrypick(...)
#436 #492 - New support for submodules #499 #514
- New
Repository.merge_file_from_index(...)
#503 - Now
Repository.diff
supports diffing two blobs #508 - New optional
fetch
parameter inRemote.create
#526 - New
pygit2.DiffStats
#406 #525 - New
Repository.get_attr(...)
#528 - New
level
optional parameter inIndex.remove
#533 - New
repr(TreeEntry)
#543
Build and install improvements:
Bugs fixed:
- Fix memory issues #477 #487 #520
- Fix TreeEntry equality testing #458 #488
Repository.write_archive
fix handling of symlinks #480- Fix type check in
Diff[...]
#495 - Fix error when merging files with unicode content #505
Other:
- Documentation improvements and fixes #448 #491 #497 #507 #517 #518 #519 #521 #523 #527 #536
- Expose the
pygit2.GIT_REPOSITORY_INIT_*
constants #483
0.22.0 (2015-01-16)
New:
- Update to libgit2 v0.22 #459
- Add support for libgit2 feature detection (new
pygit2.features
andpygit2.GIT_FEATURE_*
) #475 - New
Repository.remotes
(RemoteCollection
) #447
API Changes:
- Prototype of
clone_repository
changed, check documentation - Removed
clone_into
, useclone_repository
with callbacks instead - Use
Repository.remotes.rename(name, new_name)
instead ofRemote.rename(new_name)
- Use
Repository.remotes.delete(name)
instead ofRemote.delete()
- Now
Remote.push(...)
takes a list of refspecs instead of just one - Change
Patch.old_id
,Patch.new_id
,Note.annotated_id
,RefLogEntry.oid_old
andRefLogEntry.oid_new
to beOid
objects instead of strings #449
Other:
- Fix
init_repository
when passing optional parametersworkdir_path
,description
,template_path
,initial_head
ororigin_url
#466 #471 - Fix use-after-free when patch outlives diff #457 #461 #474
- Documentation improvements #456 #462 #465 #472 #473
- Make the GPL exception explicit in setup.py #450
0.21.4 (2014-11-04)
- Fix credentials callback not set when pushing #431 #435 #437 #438
- Fix
Repository.diff(...)
when treeish is "empty" #432 - New
Reference.peel(...)
rendersReference.get_object()
obsolete #434 - New, authenticate using ssh agent #424
- New
Repository.merge_commits(...)
#445 - Make it easier to run when libgit2 not in a standard location #441
- Documentation: review install chapter
- Documentation: many corrections #427 #429 #439 #440 #442 #443 #444
0.21.3 (2014-09-15)
Breaking changes:
- Now
Repository.blame(...)
returnsOid
instead of string #413 - New
Reference.set_target(...)
replaces theReference.target
setter andReference.log_append(...)
#414 - New
Repository.set_head(...)
replaces theRepository.head
setter #414 Repository.merge(...)
now uses theSAFE_CREATE
strategy by default #417
Other changes:
- New
Remote.delete()
#418 #420 - New
Repository.write_archive(...)
#421 - Now
Repository.checkout(...)
accepts branch objects #408 - Fix refcount leak in remotes #403 #404 #419
- Various fixes to
clone_repository(...)
#399 #411 #425 #426 - Fix build error in Python 3 #401
- Now
pip install pygit2
installs cffi first #380 #407 - Add support for PyPy3 #422
- Documentation improvements #398 #409
0.21.2 (2014-08-09)
- Fix regression with Python 2,
IndexEntry.path
returns str (bytes in Python 2 and unicode in Python 3) - Get back
IndexEntry.oid
for backwards compatibility - Config, iterate over the keys (instead of the key/value pairs) #395
Diff.find_similar
supports new threshold arguments #396- Optimization, do not load the object when expanding an oid prefix #397
0.21.1 (2014-07-22)
- Install fix #382
- Documentation improved, including #383 #385 #388
- Documentation, use the read-the-docs theme #387
- Coding style improvements #392
- New
Repository.state_cleanup()
#386 - New
Index.conflicts
#345 #389 - New checkout option to define the target directory #390
Backward incompatible changes:
Now the checkout strategy must be a keyword argument.
Change
Repository.checkout(refname, strategy)
toRepository.checkout(refname, strategy=strategy)
Idem for
checkout_head
,checkout_index
andcheckout_tree
0.21.0 (2014-06-27)
Highlights:
- Drop official support for Python 2.6, and add support for Python 3.4 #376
- Upgrade to libgit2 v0.21.0 #374
- Start using cffi #360 #361
Backward incompatible changes:
- Replace
oid
byid
through the API to follow libgit2 conventions. - Merge API overhaul following changes in libgit2.
- New
Remote.rename(...)
replacesRemote.name = ...
- Now
Remote.fetch()
returns aTransferProgress
object. - Now
Config.get_multivar(...)
returns an iterator instead of a list.
New features:
- New
Config.snapshot()
andRepository.config_snapshot()
- New
Config
methods:get_bool(...)
,get_int(...)
,parse_bool(...)
andparse_int(...)
#357 - Blob: implement the memory buffer interface #362
- New
clone_into(...)
function #368 - Now
Index
can be used alone, without a repository #372 - Add more options to
init_repository
#347 - Support
Repository.workdir = ...
and support setting detached headsRepository.head = <Oid>
#377
Other:
- Fix again build with VS2008 #364
- Fix
Blob.diff(...)
andBlob.diff_to_buffer(...)
arguments passing #366 - Fail gracefully when compiling against the wrong version of libgit2 #365
- Several documentation improvements and updates #359 #375 #378
0.20.3 (2014-04-02)
- A number of memory issues fixed #328 #348 #353 #355 #356
- Compatibility fixes for PyPy (#338), Visual Studio 2008 (#343) and Python 3.3 (#351)
- Make the sort mode parameter in
Repository.walk(...)
optional #337 - New
Object.peel(...)
#342 - New
Index.add_all(...)
#344 - Introduce support for libgit2 options #350
- More informative repr for
Repository
objects #352 - Introduce support for credentials #354
- Several documentation fixes #302 #336
- Tests, remove temporary files #341
0.20.2 (2014-02-04)
Repository:
- New
Repository.default_signature
#310
Oid:
- New
str(Oid)
deprecatesOid.hex
#322
Object:
- New
Object.id
deprecatesObject.oid
#322 - New
TreeEntry.id
deprecatesTreeEntry.oid
#322 - New
Blob.diff(...)
andBlob.diff_to_buffer(...)
#307 - New
Commit.tree_id
andCommit.parent_ids
#73 #311 - New rich comparison between tree entries #305 #313
- Now
Tree.__contains__(key)
supports paths #306 #316
Index:
- Now possible to create
IndexEntry(...)
#325 - Now
IndexEntry.path
,IndexEntry.oid
andIndexEntry.mode
are writable #325 - Now
Index.add(...)
accepts anIndexEntry
too #325 - Now
Index.write_tree(...)
is able to write to a different repository #325 - Fix memory leak in
IndexEntry.path
setter #335
Config:
Remote:
- New type
Refspec
#314 - New
Remote.push_url
#315 - New
Remote.add_push
andRemote.add_fetch
#255 #318 - New
Remote.fetch_refspecs
replacesRemote.get_fetch_refspecs()
andRemote.set_fetch_refspecs(...)
#319 - New
Remote.push_refspecs
replacesRemote.get_push_refspecs()
andRemote.set_push_refspecs(...)
#319 - New
Remote.progress
,Remote.transfer_progress
andRemote.update_tips
#274 #324 - New type
TransferProgress
#274 #324 - Fix refcount leak in
Repository.remotes
#321 #332
Other: #331
0.20.1 (2013-12-24)
- New remote ref-specs API: #290
- New
Repository.reset(...)
: #292, #294 - Export
GIT_DIFF_MINIMAL
: #293 - New
Repository.merge(...)
: #295 - Fix
Repository.blame
argument handling: #297 - Fix build error on Windows: #298
- Fix typo in the README file, Blog → Blob: #301
- Now
Diff.patch
returnsNone
if no patch: #232, #303 - New
Walker.simplify_first_parent()
: #304
0.20.0 (2013-11-24)
- Upgrade to libgit2 v0.20.0: #288
- New
Repository.head_is_unborn
replacesRepository.head_is_orphaned
- Changed
pygit2.clone_repository(...)
. Droppush_url
,fetch_spec
andpush_spec
parameters. Addignore_cert_errors
. - New
Patch.additions
andPatch.deletions
: #275 - New
Patch.is_binary
: #276 - New
Reference.log_append(...)
: #277 - New
Blob.is_binary
: #278 - New
len(Diff)
shows the number of patches: #281 - Rewrite
Repository.status()
: #283 - New
Reference.shorthand
: #284 - New
Repository.blame(...)
: #285 - Now
Repository.listall_references()
andRepository.listall_branches()
return a list, not a tuple: #289