27 KiB
0.25.1 (2017-04-25)
- Add suport for Python 3.6
- New support for stash: repository methods
stash,stash_apply,stash_dropandstash_pop#695 - Improved support for submodules: new repository methods
init_submodulesandupdate_submodules#692 - New friendlier API for branches & references:
Repository.branchesandRepository.references#700 #701 - New support for custom backends #690
- Fix
init_repositorycrash 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
Signaturedefault encoding, UTF-8 now #581 - Fixing
pip install pygit2, should install cffi first - Unit tests, fix binary diff test #586
- Document that
Diff.patchcan 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(...)returnsNoneif 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.identSome 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.DiffFileandpygit.DiffLineAPI 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.linesis now a list ofDiffLineobjects, not tuples
New features:
- New
Repository.expand_id(...)andRepository.ahead_behind(...)#448 - New
prefixparameter 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.diffsupports diffing two blobs #508 - New optional
fetchparameter inRemote.create#526 - New
pygit2.DiffStats#406 #525 - New
Repository.get_attr(...)#528 - New
leveloptional 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_archivefix 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.featuresandpygit2.GIT_FEATURE_*) #475 - New
Repository.remotes(RemoteCollection) #447
API Changes:
- Prototype of
clone_repositorychanged, check documentation - Removed
clone_into, useclone_repositorywith 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_oldandRefLogEntry.oid_newto beOidobjects instead of strings #449
Other:
- Fix
init_repositorywhen passing optional parametersworkdir_path,description,template_path,initial_headororigin_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(...)returnsOidinstead of string #413 - New
Reference.set_target(...)replaces theReference.targetsetter andReference.log_append(...)#414 - New
Repository.set_head(...)replaces theRepository.headsetter #414 Repository.merge(...)now uses theSAFE_CREATEstrategy 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 pygit2installs 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.pathreturns str (bytes in Python 2 and unicode in Python 3) - Get back
IndexEntry.oidfor backwards compatibility - Config, iterate over the keys (instead of the key/value pairs) #395
Diff.find_similarsupports 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_indexandcheckout_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
oidbyidthrough the API to follow libgit2 conventions. - Merge API overhaul following changes in libgit2.
- New
Remote.rename(...)replacesRemote.name = ... - Now
Remote.fetch()returns aTransferProgressobject. - Now
Config.get_multivar(...)returns an iterator instead of a list.
New features:
- New
Config.snapshot()andRepository.config_snapshot() - New
Configmethods:get_bool(...),get_int(...),parse_bool(...)andparse_int(...)#357 - Blob: implement the memory buffer interface #362
- New
clone_into(...)function #368 - Now
Indexcan 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
Repositoryobjects #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.iddeprecatesObject.oid#322 - New
TreeEntry.iddeprecatesTreeEntry.oid#322 - New
Blob.diff(...)andBlob.diff_to_buffer(...)#307 - New
Commit.tree_idandCommit.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.oidandIndexEntry.modeare writable #325 - Now
Index.add(...)accepts anIndexEntrytoo #325 - Now
Index.write_tree(...)is able to write to a different repository #325 - Fix memory leak in
IndexEntry.pathsetter #335
Config:
Remote:
- New type
Refspec#314 - New
Remote.push_url#315 - New
Remote.add_pushandRemote.add_fetch#255 #318 - New
Remote.fetch_refspecsreplacesRemote.get_fetch_refspecs()andRemote.set_fetch_refspecs(...)#319 - New
Remote.push_refspecsreplacesRemote.get_push_refspecs()andRemote.set_push_refspecs(...)#319 - New
Remote.progress,Remote.transfer_progressandRemote.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.blameargument handling: #297 - Fix build error on Windows: #298
- Fix typo in the README file, Blog → Blob: #301
- Now
Diff.patchreturnsNoneif 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_unbornreplacesRepository.head_is_orphaned - Changed
pygit2.clone_repository(...). Droppush_url,fetch_specandpush_specparameters. Addignore_cert_errors. - New
Patch.additionsandPatch.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