diff --git a/pygit2-1.11.1.tar.gz b/pygit2-1.11.1.tar.gz
deleted file mode 100644
index 12b5241..0000000
--- a/pygit2-1.11.1.tar.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:793f583fd33620f0ac38376db0f57768ef2922b89b459e75b1ac440377eb64ec
-size 733883
diff --git a/pygit2-1.12.2.tar.gz b/pygit2-1.12.2.tar.gz
new file mode 100644
index 0000000..b19bc33
--- /dev/null
+++ b/pygit2-1.12.2.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:56e85d0e66de957d599d1efb2409d39afeefd8f01009bfda0796b42a4b678358
+size 738453
diff --git a/python-pygit2.changes b/python-pygit2.changes
index 30dc1ae..ba8b81f 100644
--- a/python-pygit2.changes
+++ b/python-pygit2.changes
@@ -1,3 +1,29 @@
+-------------------------------------------------------------------
+Tue Jul 25 14:29:15 UTC 2023 - Dominique Leuenberger <dimstar@opensuse.org>
+
+- Update to version 1.12.2:
+  + Update wheels to bundle libssh2 1.11.0 and OpenSSL 3.0.9.
+    Remove obsolete Remote.save().
+- Changes from version 1.12.1:
+  + Fix segfault in signature when encoding is incorrect.
+  + Typing improvements.
+  + Update wheels to libgit2 v1.6.4.
+- Changes from version 1.12.0:
+  + Upgrade to libgit2 v1.6.3.
+  + Update Linux wheels to bundle OpenSSL 3.0.8.
+  + Downgrade Linux wheels to manylinux2014.
+  + New ConflictCollection.__contains__.1
+  + New Repository.references.iterator(...).
+  + New favor, flags and file_flags optional arguments for
+    Repository.merge(...).
+  + New keep_all and paths optional arguments for
+    Repository.stash(...).
+  + New Respository.state().
+  + Improve Repository.write_archive(...) performance.
+  + Sync type annotations.
+- Drop support-libgit2-1.6.patch: fixed upstream.
+- Add support-libgit2-1.7.patch: support libgit2 1.7.0.
+
 -------------------------------------------------------------------
 Tue Mar 21 07:13:27 UTC 2023 - Daniel Garcia <daniel.garcia@suse.com>
 
diff --git a/python-pygit2.spec b/python-pygit2.spec
index 9db0bee..a0947c0 100644
--- a/python-pygit2.spec
+++ b/python-pygit2.spec
@@ -19,14 +19,14 @@
 
 %define skip_python2 1
 Name:           python-pygit2
-Version:        1.11.1
+Version:        1.12.2
 Release:        0
 Summary:        Python bindings for libgit2
 License:        GPL-2.0-only
 URL:            https://github.com/libgit2/pygit2
 Source:         https://files.pythonhosted.org/packages/source/p/pygit2/pygit2-%{version}.tar.gz
-# PATCH-FIX-UPSTREAM support-libgit2-1.6.patch gh#libgit2/pygit2#1200
-Patch0:         support-libgit2-1.6.patch
+# PATCH-FIX-UPSTREAM support-libgit2-1.7.patch
+Patch0:         support-libgit2-1.7.patch
 BuildRequires:  %{python_module cached-property}
 BuildRequires:  %{python_module cffi >= 1.4.0}
 BuildRequires:  %{python_module devel}
diff --git a/support-libgit2-1.6.patch b/support-libgit2-1.6.patch
deleted file mode 100644
index b6ced7e..0000000
--- a/support-libgit2-1.6.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Index: pygit2-1.11.1/src/types.h
-===================================================================
---- pygit2-1.11.1.orig/src/types.h
-+++ pygit2-1.11.1/src/types.h
-@@ -32,8 +32,8 @@
- #include <Python.h>
- #include <git2.h>
- 
--#if !(LIBGIT2_VER_MAJOR == 1 && LIBGIT2_VER_MINOR == 5)
--#error You need a compatible libgit2 version (1.5.x)
-+#if !(LIBGIT2_VER_MAJOR == 1 && LIBGIT2_VER_MINOR == 6)
-+#error You need a compatible libgit2 version (1.6.x)
- #endif
- 
- /*
diff --git a/support-libgit2-1.7.patch b/support-libgit2-1.7.patch
new file mode 100644
index 0000000..f79e792
--- /dev/null
+++ b/support-libgit2-1.7.patch
@@ -0,0 +1,130 @@
+From 1473e8eb6eb59dc7521dcd5f8a4c9390e9b53223 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?J=2E=20David=20Ib=C3=A1=C3=B1ez?= <jdavid.ibp@gmail.com>
+Date: Mon, 17 Jul 2023 22:23:30 +0200
+Subject: [PATCH] Upgrade to libgit2 v1.7.0
+
+---
+ .github/workflows/tests.yml  |  8 ++++----
+ .github/workflows/wheels.yml |  4 ++--
+ CHANGELOG.rst                |  9 +++++++++
+ Makefile                     |  2 +-
+ appveyor.yml                 |  2 +-
+ build.sh                     | 12 ++++++------
+ docs/install.rst             | 18 ++++++++++--------
+ pygit2/decl/diff.h           |  1 +
+ pygit2/decl/oid.h            |  4 ++++
+ pygit2/decl/remote.h         |  1 +
+ src/types.h                  |  4 ++--
+ 11 files changed, 41 insertions(+), 24 deletions(-)
+
+Index: pygit2-1.12.2/CHANGELOG.rst
+===================================================================
+--- pygit2-1.12.2.orig/CHANGELOG.rst
++++ pygit2-1.12.2/CHANGELOG.rst
+@@ -1,3 +1,12 @@
++1.13.0 (UNRELEASED)
++-------------------------
++
++- Upgrade to libgit2 v1.7.0
++
++- docs: update links to pypy, pygit2.org
++  `#1228 <https://github.com/libgit2/pygit2/pull/1228>`_
++
++
+ 1.12.2 (2023-06-25)
+ -------------------------
+ 
+Index: pygit2-1.12.2/Makefile
+===================================================================
+--- pygit2-1.12.2.orig/Makefile
++++ pygit2-1.12.2/Makefile
+@@ -1,7 +1,7 @@
+ .PHONY: build html
+ 
+ build:
+-	OPENSSL_VERSION=3.0.9 LIBSSH2_VERSION=1.11.0 LIBGIT2_VERSION=1.6.4 sh build.sh
++	OPENSSL_VERSION=3.0.9 LIBSSH2_VERSION=1.11.0 LIBGIT2_VERSION=1.7.0 sh build.sh
+ 
+ html: build
+ 	make -C docs html
+Index: pygit2-1.12.2/build.sh
+===================================================================
+--- pygit2-1.12.2.orig/build.sh
++++ pygit2-1.12.2/build.sh
+@@ -26,19 +26,19 @@
+ #
+ #   sh build.sh
+ #
+-# Build libgit2 1.6.4 (will use libssh2 if available), then build pygit2
++# Build libgit2 1.7.0 (will use libssh2 if available), then build pygit2
+ # inplace:
+ #
+-#   LIBGIT2_VERSION=1.6.4 sh build.sh
++#   LIBGIT2_VERSION=1.7.0 sh build.sh
+ #
+-# Build libssh2 1.11.0 and libgit2 1.6.4, then build pygit2 inplace:
++# Build libssh2 1.11.0 and libgit2 1.7.0, then build pygit2 inplace:
+ #
+-#   LIBSSH2_VERSION=1.11.0 LIBGIT2_VERSION=1.6.4 sh build.sh
++#   LIBSSH2_VERSION=1.11.0 LIBGIT2_VERSION=1.7.0 sh build.sh
+ #
+-# Tell where libssh2 is installed, build libgit2 1.6.4, then build pygit2
++# Tell where libssh2 is installed, build libgit2 1.7.0, then build pygit2
+ # inplace:
+ #
+-#   LIBSSH2_PREFIX=/usr/local LIBGIT2_VERSION=1.6.4 sh build.sh
++#   LIBSSH2_PREFIX=/usr/local LIBGIT2_VERSION=1.7.0 sh build.sh
+ #
+ # Build inplace and run the tests:
+ #
+Index: pygit2-1.12.2/pygit2/decl/diff.h
+===================================================================
+--- pygit2-1.12.2.orig/pygit2/decl/diff.h
++++ pygit2-1.12.2/pygit2/decl/diff.h
+@@ -54,6 +54,7 @@ typedef struct {
+ 	void                *payload;
+ 	uint32_t    context_lines;
+ 	uint32_t    interhunk_lines;
++	git_oid_t   oid_type;
+ 	uint16_t    id_abbrev;
+ 	git_off_t   max_size;
+ 	const char *old_prefix;
+Index: pygit2-1.12.2/pygit2/decl/oid.h
+===================================================================
+--- pygit2-1.12.2.orig/pygit2/decl/oid.h
++++ pygit2-1.12.2/pygit2/decl/oid.h
+@@ -1,3 +1,7 @@
++typedef enum {
++	GIT_OID_SHA1 = 1,  /**< SHA1 */
++} git_oid_t;
++
+ typedef struct git_oid {
+ 	unsigned char id[20];
+ } git_oid;
+Index: pygit2-1.12.2/pygit2/decl/remote.h
+===================================================================
+--- pygit2-1.12.2.orig/pygit2/decl/remote.h
++++ pygit2-1.12.2/pygit2/decl/remote.h
+@@ -83,6 +83,7 @@ typedef struct {
+ 	int update_fetchhead;
+ 	git_remote_autotag_option_t download_tags;
+ 	git_proxy_options proxy_opts;
++	int depth;
+ 	git_remote_redirect_t follow_redirects;
+ 	git_strarray custom_headers;
+ } git_fetch_options;
+Index: pygit2-1.12.2/src/types.h
+===================================================================
+--- pygit2-1.12.2.orig/src/types.h
++++ pygit2-1.12.2/src/types.h
+@@ -32,8 +32,8 @@
+ #include <Python.h>
+ #include <git2.h>
+ 
+-#if !(LIBGIT2_VER_MAJOR == 1 && LIBGIT2_VER_MINOR == 6)
+-#error You need a compatible libgit2 version (1.6.x)
++#if !(LIBGIT2_VER_MAJOR == 1 && LIBGIT2_VER_MINOR == 7)
++#error You need a compatible libgit2 version (1.7.x)
+ #endif
+ 
+ /*