pygit2 1.18.2__tar.gz → 1.19.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pygit2-1.18.2 → pygit2-1.19.1}/AUTHORS.md +4 -3
- {pygit2-1.18.2 → pygit2-1.19.1}/CHANGELOG.md +82 -25
- pygit2-1.19.1/Makefile +7 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/PKG-INFO +17 -13
- {pygit2-1.18.2 → pygit2-1.19.1}/README.md +13 -9
- pygit2-1.19.1/build.ps1 +21 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/build.sh +12 -7
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/__init__.py +3 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/_build.py +1 -1
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/_libgit2/ffi.pyi +5 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/_pygit2.pyi +2 -2
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/_run.py +1 -0
- pygit2-1.19.1/pygit2/decl/transaction.h +8 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/types.h +2 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/index.py +1 -7
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/repository.py +18 -0
- pygit2-1.19.1/pygit2/transaction.py +199 -0
- pygit2-1.19.1/pyproject.toml +77 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/requirements-test.txt +0 -2
- pygit2-1.19.1/requirements-typing.txt +2 -0
- pygit2-1.19.1/requirements-wheel.txt +1 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/requirements.txt +1 -1
- {pygit2-1.18.2 → pygit2-1.19.1}/setup.py +5 -5
- {pygit2-1.18.2 → pygit2-1.19.1}/src/diff.c +5 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/pygit2.c +4 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/repository.c +23 -3
- {pygit2-1.18.2 → pygit2-1.19.1}/test/__init__.py +3 -2
- {pygit2-1.18.2 → pygit2-1.19.1}/test/conftest.py +0 -5
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_diff.py +67 -22
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_refs.py +4 -1
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_repository.py +3 -1
- pygit2-1.19.1/test/test_transaction.py +327 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/utils.py +13 -1
- pygit2-1.18.2/Makefile +0 -7
- pygit2-1.18.2/pyproject.toml +0 -42
- {pygit2-1.18.2 → pygit2-1.19.1}/COPYING +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/SPONSORS.md +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/build_tag.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/mypy-stubtest.ini +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/mypy.ini +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/blame.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/blob.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/branches.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/callbacks.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/config.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/credentials.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/attr.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/blame.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/buffer.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/callbacks.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/checkout.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/clone.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/commit.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/common.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/config.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/describe.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/diff.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/errors.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/graph.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/index.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/indexer.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/merge.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/net.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/oid.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/options.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/pack.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/proxy.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/refspec.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/remote.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/repository.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/revert.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/stash.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/strarray.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/submodule.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/decl/transport.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/enums.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/errors.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/ffi.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/filter.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/legacyenums.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/options.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/packbuilder.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/py.typed +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/references.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/refspec.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/remotes.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/settings.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/submodules.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pygit2/utils.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/pytest.ini +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/setup.cfg +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/blob.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/branch.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/branch.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/commit.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/diff.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/error.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/error.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/filter.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/filter.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/mailmap.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/mailmap.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/note.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/note.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/object.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/object.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/odb.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/odb.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/odb_backend.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/odb_backend.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/oid.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/oid.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/patch.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/patch.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/refdb.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/refdb.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/refdb_backend.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/refdb_backend.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/reference.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/reference.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/repository.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/revspec.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/revspec.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/signature.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/signature.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/stash.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/tag.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/tree.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/tree.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/treebuilder.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/treebuilder.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/types.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/utils.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/utils.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/walker.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/walker.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/wildmatch.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/wildmatch.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/worktree.c +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/src/worktree.h +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/data/barerepo.zip +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/data/binaryfilerepo.zip +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/data/blameflagsrepo.zip +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/data/dirtyrepo.zip +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/data/emptyrepo.zip +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/data/encoding.zip +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/data/gpgsigned.zip +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/data/submodulerepo.zip +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/data/testrepo.zip +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/data/testrepoformerging.zip +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/data/testrepopacked.zip +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/data/trailerrepo.zip +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/data/utf8branchrepo.zip +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/keys/pygit2_empty +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/keys/pygit2_empty.pub +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_apply_diff.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_archive.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_attributes.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_blame.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_blob.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_branch.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_branch_empty.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_cherrypick.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_commit.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_commit_gpg.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_commit_trailer.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_config.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_credentials.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_describe.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_diff_binary.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_filter.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_index.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_mailmap.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_merge.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_nonunicode.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_note.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_object.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_odb.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_odb_backend.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_oid.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_options.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_packbuilder.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_patch.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_patch_encoding.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_refdb_backend.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_remote.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_remote_prune.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_remote_utf8.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_repository_bare.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_repository_custom.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_repository_empty.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_revparse.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_revwalk.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_settings.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_signature.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_status.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_submodule.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_tag.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_tree.py +0 -0
- {pygit2-1.18.2 → pygit2-1.19.1}/test/test_treebuilder.py +0 -0
|
@@ -13,6 +13,7 @@ Authors:
|
|
|
13
13
|
Dave Borowitz
|
|
14
14
|
Brandon Milton
|
|
15
15
|
Daniel Rodríguez Troitiño
|
|
16
|
+
Brendan Doherty
|
|
16
17
|
Peter Rowlands
|
|
17
18
|
Richo Healey
|
|
18
19
|
Christian Boos
|
|
@@ -50,7 +51,7 @@ Authors:
|
|
|
50
51
|
Mathieu Parent
|
|
51
52
|
Michał Kępień
|
|
52
53
|
Nicolas Dandrimont
|
|
53
|
-
Raphael Medaer
|
|
54
|
+
Raphael Medaer
|
|
54
55
|
Yaroslav Halchenko
|
|
55
56
|
Anatoly Techtonik
|
|
56
57
|
Andrew Olsen
|
|
@@ -64,6 +65,7 @@ Authors:
|
|
|
64
65
|
Santiago Perez De Rosso
|
|
65
66
|
Sebastian Thiel
|
|
66
67
|
Thom Wiggers
|
|
68
|
+
WANG Xuerui
|
|
67
69
|
William Manley
|
|
68
70
|
Alexander Linne
|
|
69
71
|
Alok Singhal
|
|
@@ -89,7 +91,6 @@ Authors:
|
|
|
89
91
|
Sukhman Bhuller
|
|
90
92
|
Thomas Kluyver
|
|
91
93
|
Tyler Cipriani
|
|
92
|
-
WANG Xuerui
|
|
93
94
|
Alex Chamberlain
|
|
94
95
|
Alexander Bayandin
|
|
95
96
|
Amit Bakshi
|
|
@@ -98,6 +99,7 @@ Authors:
|
|
|
98
99
|
Ben Davis
|
|
99
100
|
CJ Steiner
|
|
100
101
|
Colin Watson
|
|
102
|
+
Craig de Stigter
|
|
101
103
|
Dan Yeaw
|
|
102
104
|
Dustin Raimondi
|
|
103
105
|
Eric Schrijver
|
|
@@ -156,7 +158,6 @@ Authors:
|
|
|
156
158
|
Chris Rebert
|
|
157
159
|
Christopher Hunt
|
|
158
160
|
Claudio Jolowicz
|
|
159
|
-
Craig de Stigter
|
|
160
161
|
Cristian Hotea
|
|
161
162
|
Cyril Jouve
|
|
162
163
|
Dan Cecile
|
|
@@ -1,3 +1,52 @@
|
|
|
1
|
+
# 1.19.1 (2025-12-29)
|
|
2
|
+
|
|
3
|
+
- Update wheels to libgit2 1.9.2 and OpenSSL 3.5
|
|
4
|
+
|
|
5
|
+
- Fix: now diff's getitem/iter returns `None` for unchanged or binary files
|
|
6
|
+
[#1412](https://github.com/libgit2/pygit2/pull/1412)
|
|
7
|
+
|
|
8
|
+
- CI (macOS): arm, intel and pypy wheels (instead of universal)
|
|
9
|
+
[#1441](https://github.com/libgit2/pygit2/pull/1441)
|
|
10
|
+
|
|
11
|
+
- CI (pypy): fix tests
|
|
12
|
+
[#1437](https://github.com/libgit2/pygit2/pull/1437)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
# 1.19.0 (2025-10-23)
|
|
16
|
+
|
|
17
|
+
- Add support for Python 3.14 and drop 3.10
|
|
18
|
+
|
|
19
|
+
- Support threaded builds (experimental)
|
|
20
|
+
[#1430](https://github.com/libgit2/pygit2/pull/1430)
|
|
21
|
+
[#1435](https://github.com/libgit2/pygit2/pull/1435)
|
|
22
|
+
|
|
23
|
+
- Add Linux musl wheels for AArch64
|
|
24
|
+
|
|
25
|
+
- Add Windows wheels for AArch64;
|
|
26
|
+
CI: build Windows wheels with cibuildwheel on GitHub
|
|
27
|
+
[#1423](https://github.com/libgit2/pygit2/pull/1423)
|
|
28
|
+
|
|
29
|
+
- New `Repository.transaction()` context manager, returns new `ReferenceTransaction`
|
|
30
|
+
[#1420](https://github.com/libgit2/pygit2/pull/1420)
|
|
31
|
+
|
|
32
|
+
- CI: add GitHub releases and other improvements
|
|
33
|
+
[#1433](https://github.com/libgit2/pygit2/pull/1433)
|
|
34
|
+
[#1432](https://github.com/libgit2/pygit2/pull/1432)
|
|
35
|
+
[#1425](https://github.com/libgit2/pygit2/pull/1425)
|
|
36
|
+
[#1431](https://github.com/libgit2/pygit2/pull/1431)
|
|
37
|
+
|
|
38
|
+
- Documentation improvements and other changes
|
|
39
|
+
[#1426](https://github.com/libgit2/pygit2/pull/1426)
|
|
40
|
+
[#1424](https://github.com/libgit2/pygit2/pull/1424)
|
|
41
|
+
|
|
42
|
+
Breaking changes:
|
|
43
|
+
|
|
44
|
+
- Remove deprecated `IndexEntry.hex`, use `str(entry.id)` instead of `entry.hex`
|
|
45
|
+
|
|
46
|
+
Deprecations:
|
|
47
|
+
|
|
48
|
+
- Deprecate `IndexEntry.oid`, use `entry.id` instead of `entry.oid`
|
|
49
|
+
|
|
1
50
|
# 1.18.2 (2025-08-16)
|
|
2
51
|
|
|
3
52
|
- Add support for almost all global options
|
|
@@ -298,31 +347,39 @@ Deprecations:
|
|
|
298
347
|
|
|
299
348
|
# 1.14.0 (2024-01-26)
|
|
300
349
|
|
|
301
|
-
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
350
|
+
- Drop support for Python 3.8
|
|
351
|
+
|
|
352
|
+
- Add Linux wheels for musl on x86\_64
|
|
353
|
+
[#1266](https://github.com/libgit2/pygit2/pull/1266)
|
|
354
|
+
|
|
355
|
+
- New `Repository.submodules` namespace
|
|
356
|
+
[#1250](https://github.com/libgit2/pygit2/pull/1250)
|
|
357
|
+
|
|
358
|
+
- New `Repository.listall_mergeheads()`, `Repository.message`,
|
|
359
|
+
`Repository.raw_message` and `Repository.remove_message()`
|
|
360
|
+
[#1261](https://github.com/libgit2/pygit2/pull/1261)
|
|
361
|
+
|
|
362
|
+
- New `pygit2.enums` supersedes the `GIT_` constants
|
|
363
|
+
[#1251](https://github.com/libgit2/pygit2/pull/1251)
|
|
364
|
+
|
|
365
|
+
- Now `Repository.status()`, `Repository.status_file()`,
|
|
366
|
+
`Repository.merge_analysis()`, `DiffFile.flags`, `DiffFile.mode`,
|
|
367
|
+
`DiffDelta.flags` and `DiffDelta.status` return enums
|
|
368
|
+
[#1263](https://github.com/libgit2/pygit2/pull/1263)
|
|
369
|
+
|
|
370
|
+
- Now repository\'s `merge()`, `merge_commits()` and `merge_trees()`
|
|
371
|
+
take enums/flags for their `favor`, `flags` and `file_flags` arguments.
|
|
372
|
+
[#1271](https://github.com/libgit2/pygit2/pull/1271)
|
|
373
|
+
[#1272](https://github.com/libgit2/pygit2/pull/1272)
|
|
374
|
+
|
|
375
|
+
- Fix crash in filter cleanup
|
|
376
|
+
[#1259](https://github.com/libgit2/pygit2/pull/1259)
|
|
377
|
+
|
|
378
|
+
- Documentation fixes
|
|
379
|
+
[#1255](https://github.com/libgit2/pygit2/pull/1255)
|
|
380
|
+
[#1258](https://github.com/libgit2/pygit2/pull/1258)
|
|
381
|
+
[#1268](https://github.com/libgit2/pygit2/pull/1268)
|
|
382
|
+
[#1270](https://github.com/libgit2/pygit2/pull/1270)
|
|
326
383
|
|
|
327
384
|
Breaking changes:
|
|
328
385
|
|
pygit2-1.19.1/Makefile
ADDED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pygit2
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.19.1
|
|
4
4
|
Summary: Python bindings for libgit2.
|
|
5
5
|
Home-page: https://github.com/libgit2/pygit2
|
|
6
6
|
Maintainer: J. David Ibáñez
|
|
@@ -14,19 +14,19 @@ Classifier: Development Status :: 5 - Production/Stable
|
|
|
14
14
|
Classifier: Intended Audience :: Developers
|
|
15
15
|
Classifier: Programming Language :: Python
|
|
16
16
|
Classifier: Programming Language :: Python :: 3
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.11
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.12
|
|
20
19
|
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
21
21
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
22
22
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
23
23
|
Classifier: Topic :: Software Development :: Version Control
|
|
24
24
|
Classifier: Typing :: Typed
|
|
25
|
-
Requires-Python: >=3.
|
|
25
|
+
Requires-Python: >=3.11
|
|
26
26
|
Description-Content-Type: text/markdown
|
|
27
27
|
License-File: COPYING
|
|
28
28
|
License-File: AUTHORS.md
|
|
29
|
-
Requires-Dist: cffi>=
|
|
29
|
+
Requires-Dist: cffi>=2.0
|
|
30
30
|
Dynamic: classifier
|
|
31
31
|
Dynamic: description
|
|
32
32
|
Dynamic: description-content-type
|
|
@@ -44,20 +44,24 @@ Dynamic: summary
|
|
|
44
44
|
# pygit2 - libgit2 bindings in Python
|
|
45
45
|
|
|
46
46
|
Bindings to the libgit2 shared library, implements Git plumbing.
|
|
47
|
-
Supports Python 3.
|
|
47
|
+
Supports Python 3.11 to 3.14 and PyPy3 7.3+
|
|
48
48
|
|
|
49
|
-
[![
|
|
49
|
+
[![test-ci-badge][test-ci-badge]][test-ci-link]
|
|
50
|
+
[![deploy-ci-badge][deploy-ci-badge]][deploy-ci-link]
|
|
50
51
|
|
|
51
|
-
[
|
|
52
|
+
[deploy-ci-badge]: https://github.com/libgit2/pygit2/actions/workflows/wheels.yml/badge.svg
|
|
53
|
+
[deploy-ci-link]: https://github.com/libgit2/pygit2/actions/workflows/wheels.yml
|
|
54
|
+
[test-ci-badge]: https://github.com/libgit2/pygit2/actions/workflows/tests.yml/badge.svg
|
|
55
|
+
[test-ci-link]: https://github.com/libgit2/pygit2/actions/workflows/tests.yml
|
|
52
56
|
|
|
53
57
|
## Links
|
|
54
58
|
|
|
55
|
-
-
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
59
|
+
- Documentation - <https://www.pygit2.org/>
|
|
60
|
+
- Install - <https://www.pygit2.org/install.html>
|
|
61
|
+
- Download - <https://pypi.org/project/pygit2/>
|
|
62
|
+
- Source code and issue tracker - <https://github.com/libgit2/pygit2>
|
|
63
|
+
- Changelog - <https://github.com/libgit2/pygit2/blob/master/CHANGELOG.md>
|
|
64
|
+
- Authors - <https://github.com/libgit2/pygit2/blob/master/AUTHORS.md>
|
|
61
65
|
|
|
62
66
|
## Sponsors
|
|
63
67
|
|
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
# pygit2 - libgit2 bindings in Python
|
|
2
2
|
|
|
3
3
|
Bindings to the libgit2 shared library, implements Git plumbing.
|
|
4
|
-
Supports Python 3.
|
|
4
|
+
Supports Python 3.11 to 3.14 and PyPy3 7.3+
|
|
5
5
|
|
|
6
|
-
[![
|
|
6
|
+
[![test-ci-badge][test-ci-badge]][test-ci-link]
|
|
7
|
+
[![deploy-ci-badge][deploy-ci-badge]][deploy-ci-link]
|
|
7
8
|
|
|
8
|
-
[
|
|
9
|
+
[deploy-ci-badge]: https://github.com/libgit2/pygit2/actions/workflows/wheels.yml/badge.svg
|
|
10
|
+
[deploy-ci-link]: https://github.com/libgit2/pygit2/actions/workflows/wheels.yml
|
|
11
|
+
[test-ci-badge]: https://github.com/libgit2/pygit2/actions/workflows/tests.yml/badge.svg
|
|
12
|
+
[test-ci-link]: https://github.com/libgit2/pygit2/actions/workflows/tests.yml
|
|
9
13
|
|
|
10
14
|
## Links
|
|
11
15
|
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
16
|
+
- Documentation - <https://www.pygit2.org/>
|
|
17
|
+
- Install - <https://www.pygit2.org/install.html>
|
|
18
|
+
- Download - <https://pypi.org/project/pygit2/>
|
|
19
|
+
- Source code and issue tracker - <https://github.com/libgit2/pygit2>
|
|
20
|
+
- Changelog - <https://github.com/libgit2/pygit2/blob/master/CHANGELOG.md>
|
|
21
|
+
- Authors - <https://github.com/libgit2/pygit2/blob/master/AUTHORS.md>
|
|
18
22
|
|
|
19
23
|
## Sponsors
|
|
20
24
|
|
pygit2-1.19.1/build.ps1
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
if (!(Test-Path -Path "build")) {
|
|
2
|
+
# in case the pygit2 package build/ workspace has not been created by cibuildwheel yet
|
|
3
|
+
mkdir build
|
|
4
|
+
}
|
|
5
|
+
if (Test-Path -Path "$env:LIBGIT2_SRC") {
|
|
6
|
+
Set-Location "$env:LIBGIT2_SRC"
|
|
7
|
+
# for local runs, reuse build/libgit_src if it exists
|
|
8
|
+
if (Test-Path -Path build) {
|
|
9
|
+
# purge previous build env (likely for a different arch type)
|
|
10
|
+
Remove-Item -Recurse -Force build
|
|
11
|
+
}
|
|
12
|
+
# ensure we are checked out to the right version
|
|
13
|
+
git fetch --depth=1 --tags
|
|
14
|
+
git checkout "v$env:LIBGIT2_VERSION"
|
|
15
|
+
} else {
|
|
16
|
+
# from a fresh run (like in CI)
|
|
17
|
+
git clone --depth=1 -b "v$env:LIBGIT2_VERSION" https://github.com/libgit2/libgit2.git $env:LIBGIT2_SRC
|
|
18
|
+
Set-Location "$env:LIBGIT2_SRC"
|
|
19
|
+
}
|
|
20
|
+
cmake -B build -S . -DBUILD_TESTS=OFF
|
|
21
|
+
cmake --build build/ --config=Release --target install
|
|
@@ -22,14 +22,14 @@
|
|
|
22
22
|
#
|
|
23
23
|
# sh build.sh
|
|
24
24
|
#
|
|
25
|
-
# Build libgit2 1.9.
|
|
25
|
+
# Build libgit2 1.9.2 (will use libssh2 if available), then build pygit2
|
|
26
26
|
# inplace:
|
|
27
27
|
#
|
|
28
|
-
# LIBGIT2_VERSION=1.9.
|
|
28
|
+
# LIBGIT2_VERSION=1.9.2 sh build.sh
|
|
29
29
|
#
|
|
30
|
-
# Build libssh2 1.11.1 and libgit2 1.9.
|
|
30
|
+
# Build libssh2 1.11.1 and libgit2 1.9.2, then build pygit2 inplace:
|
|
31
31
|
#
|
|
32
|
-
# LIBSSH2_VERSION=1.11.1 LIBGIT2_VERSION=1.9.
|
|
32
|
+
# LIBSSH2_VERSION=1.11.1 LIBGIT2_VERSION=1.9.2 sh build.sh
|
|
33
33
|
#
|
|
34
34
|
# Build inplace and run the tests:
|
|
35
35
|
#
|
|
@@ -62,6 +62,8 @@ if [ "$CIBUILDWHEEL" = "1" ]; then
|
|
|
62
62
|
apt-get install wget -y
|
|
63
63
|
if [ -z "$OPENSSL_VERSION" ]; then
|
|
64
64
|
apt-get install libssl-dev -y
|
|
65
|
+
else
|
|
66
|
+
apt-get install libtime-piece-perl -y
|
|
65
67
|
fi
|
|
66
68
|
elif [ -f /usr/bin/yum ]; then
|
|
67
69
|
yum install wget zlib-devel -y
|
|
@@ -70,11 +72,14 @@ if [ "$CIBUILDWHEEL" = "1" ]; then
|
|
|
70
72
|
else
|
|
71
73
|
yum install perl-IPC-Cmd -y
|
|
72
74
|
yum install perl-Pod-Html -y
|
|
75
|
+
yum install perl-Time-Piece -y
|
|
73
76
|
fi
|
|
74
77
|
elif [ -f /sbin/apk ]; then
|
|
75
78
|
apk add wget
|
|
76
79
|
if [ -z "$OPENSSL_VERSION" ]; then
|
|
77
|
-
apk add openssl-dev
|
|
80
|
+
apk add --no-cache openssl-dev
|
|
81
|
+
else
|
|
82
|
+
apk add --no-cache perl
|
|
78
83
|
fi
|
|
79
84
|
fi
|
|
80
85
|
rm -rf ci
|
|
@@ -134,7 +139,7 @@ if [ -n "$OPENSSL_VERSION" ]; then
|
|
|
134
139
|
# Linux
|
|
135
140
|
tar xf $FILENAME.tar.gz
|
|
136
141
|
cd $FILENAME
|
|
137
|
-
./Configure shared --prefix=$PREFIX --libdir=$PREFIX/lib
|
|
142
|
+
./Configure shared no-apps no-docs no-tests --prefix=$PREFIX --libdir=$PREFIX/lib
|
|
138
143
|
make
|
|
139
144
|
make install
|
|
140
145
|
OPENSSL_PREFIX=$(pwd)
|
|
@@ -268,7 +273,7 @@ if [ "$1" = "mypy" ]; then
|
|
|
268
273
|
if [ -n "$WHEELDIR" ]; then
|
|
269
274
|
$PREFIX/bin/pip install $WHEELDIR/pygit2*-$PYTHON_TAG-*.whl
|
|
270
275
|
fi
|
|
271
|
-
$PREFIX/bin/pip install -r requirements-test.txt
|
|
276
|
+
$PREFIX/bin/pip install -r requirements-test.txt -r requirements-typing.txt
|
|
272
277
|
$PREFIX/bin/mypy pygit2 test
|
|
273
278
|
fi
|
|
274
279
|
|
|
@@ -366,6 +366,7 @@ from .remotes import Remote
|
|
|
366
366
|
from .repository import Repository
|
|
367
367
|
from .settings import Settings
|
|
368
368
|
from .submodules import Submodule
|
|
369
|
+
from .transaction import ReferenceTransaction
|
|
369
370
|
from .utils import to_bytes, to_str
|
|
370
371
|
|
|
371
372
|
# Features
|
|
@@ -971,6 +972,8 @@ __all__ = (
|
|
|
971
972
|
'Settings',
|
|
972
973
|
'submodules',
|
|
973
974
|
'Submodule',
|
|
975
|
+
'transaction',
|
|
976
|
+
'ReferenceTransaction',
|
|
974
977
|
'utils',
|
|
975
978
|
'to_bytes',
|
|
976
979
|
'to_str',
|
|
@@ -239,12 +239,17 @@ class GitRemoteC:
|
|
|
239
239
|
class GitReferenceC:
|
|
240
240
|
pass
|
|
241
241
|
|
|
242
|
+
class GitTransactionC:
|
|
243
|
+
pass
|
|
244
|
+
|
|
242
245
|
def string(a: char_pointer) -> bytes: ...
|
|
243
246
|
@overload
|
|
244
247
|
def new(a: Literal['git_repository **']) -> _Pointer[GitRepositoryC]: ...
|
|
245
248
|
@overload
|
|
246
249
|
def new(a: Literal['git_remote **']) -> _Pointer[GitRemoteC]: ...
|
|
247
250
|
@overload
|
|
251
|
+
def new(a: Literal['git_transaction **']) -> _Pointer[GitTransactionC]: ...
|
|
252
|
+
@overload
|
|
248
253
|
def new(a: Literal['git_repository_init_options *']) -> GitRepositoryInitOptionsC: ...
|
|
249
254
|
@overload
|
|
250
255
|
def new(a: Literal['git_submodule_update_options *']) -> GitSubmoduleUpdateOptionsC: ...
|
|
@@ -432,8 +432,8 @@ class Diff:
|
|
|
432
432
|
def from_c(diff, repo) -> Diff: ...
|
|
433
433
|
@staticmethod
|
|
434
434
|
def parse_diff(git_diff: str | bytes) -> Diff: ...
|
|
435
|
-
def __getitem__(self, index: int) -> Patch: ... # Diff_getitem
|
|
436
|
-
def __iter__(self) -> Iterator[Patch]: ... # -> DiffIter
|
|
435
|
+
def __getitem__(self, index: int) -> Patch | None: ... # Diff_getitem
|
|
436
|
+
def __iter__(self) -> Iterator[Patch | None]: ... # -> DiffIter
|
|
437
437
|
def __len__(self) -> int: ...
|
|
438
438
|
|
|
439
439
|
class DiffDelta:
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
int git_transaction_new(git_transaction **out, git_repository *repo);
|
|
2
|
+
int git_transaction_lock_ref(git_transaction *tx, const char *refname);
|
|
3
|
+
int git_transaction_set_target(git_transaction *tx, const char *refname, const git_oid *target, const git_signature *sig, const char *msg);
|
|
4
|
+
int git_transaction_set_symbolic_target(git_transaction *tx, const char *refname, const char *target, const git_signature *sig, const char *msg);
|
|
5
|
+
int git_transaction_set_reflog(git_transaction *tx, const char *refname, const git_reflog *reflog);
|
|
6
|
+
int git_transaction_remove(git_transaction *tx, const char *refname);
|
|
7
|
+
int git_transaction_commit(git_transaction *tx);
|
|
8
|
+
void git_transaction_free(git_transaction *tx);
|
|
@@ -12,6 +12,8 @@ typedef struct git_submodule git_submodule;
|
|
|
12
12
|
typedef struct git_transport git_transport;
|
|
13
13
|
typedef struct git_tree git_tree;
|
|
14
14
|
typedef struct git_packbuilder git_packbuilder;
|
|
15
|
+
typedef struct git_transaction git_transaction;
|
|
16
|
+
typedef struct git_reflog git_reflog;
|
|
15
17
|
|
|
16
18
|
typedef int64_t git_off_t;
|
|
17
19
|
typedef int64_t git_time_t;
|
|
@@ -446,15 +446,9 @@ class IndexEntry:
|
|
|
446
446
|
|
|
447
447
|
@property
|
|
448
448
|
def oid(self):
|
|
449
|
-
|
|
449
|
+
warnings.warn('Use entry.id', DeprecationWarning)
|
|
450
450
|
return self.id
|
|
451
451
|
|
|
452
|
-
@property
|
|
453
|
-
def hex(self):
|
|
454
|
-
"""The id of the referenced object as a hex string"""
|
|
455
|
-
warnings.warn('Use str(entry.id)', DeprecationWarning)
|
|
456
|
-
return str(self.id)
|
|
457
|
-
|
|
458
452
|
def __str__(self):
|
|
459
453
|
return f'<path={self.path} id={self.id} mode={self.mode}>'
|
|
460
454
|
|
|
@@ -78,6 +78,7 @@ from .packbuilder import PackBuilder
|
|
|
78
78
|
from .references import References
|
|
79
79
|
from .remotes import RemoteCollection
|
|
80
80
|
from .submodules import SubmoduleCollection
|
|
81
|
+
from .transaction import ReferenceTransaction
|
|
81
82
|
from .utils import StrArray, to_bytes
|
|
82
83
|
|
|
83
84
|
if TYPE_CHECKING:
|
|
@@ -120,6 +121,7 @@ class BaseRepository(_Repository):
|
|
|
120
121
|
self.references = References(self)
|
|
121
122
|
self.remotes = RemoteCollection(self)
|
|
122
123
|
self.submodules = SubmoduleCollection(self)
|
|
124
|
+
self._active_transaction = None
|
|
123
125
|
|
|
124
126
|
# Get the pointer as the contents of a buffer and store it for
|
|
125
127
|
# later access
|
|
@@ -359,6 +361,22 @@ class BaseRepository(_Repository):
|
|
|
359
361
|
|
|
360
362
|
return (commit, reference) # type: ignore
|
|
361
363
|
|
|
364
|
+
def transaction(self) -> ReferenceTransaction:
|
|
365
|
+
"""Create a new reference transaction.
|
|
366
|
+
|
|
367
|
+
Returns a context manager that commits all reference updates atomically
|
|
368
|
+
when the context exits successfully, or performs no updates if an exception
|
|
369
|
+
is raised.
|
|
370
|
+
|
|
371
|
+
Example::
|
|
372
|
+
|
|
373
|
+
with repo.transaction() as txn:
|
|
374
|
+
txn.lock_ref('refs/heads/master')
|
|
375
|
+
txn.set_target('refs/heads/master', new_oid, message='Update')
|
|
376
|
+
"""
|
|
377
|
+
txn = ReferenceTransaction(self)
|
|
378
|
+
return txn
|
|
379
|
+
|
|
362
380
|
#
|
|
363
381
|
# Checkout
|
|
364
382
|
#
|