git: 97d454cb324d - main - devel/git-cinnabar: unbreak after d3a5eb641d28

From: Jan Beich <jbeich_at_FreeBSD.org>
Date: Wed, 15 Mar 2023 18:31:06 UTC
The branch main has been updated by jbeich:

URL: https://cgit.FreeBSD.org/ports/commit/?id=97d454cb324d5a1dae16cde52dd2f412ea571c02

commit 97d454cb324d5a1dae16cde52dd2f412ea571c02
Author:     Jan Beich <jbeich@FreeBSD.org>
AuthorDate: 2023-03-15 18:03:15 +0000
Commit:     Jan Beich <jbeich@FreeBSD.org>
CommitDate: 2023-03-15 18:30:21 +0000

    devel/git-cinnabar: unbreak after d3a5eb641d28
    
    patch -p1 -F0 -o helper/object-file.patched.c git-core/object-file.c < helper/object-file.c.patch
    Hmm...  Looks like a unified diff to me...
    The text leading up to this was:
    --------------------------
    |diff --git a/object-file.c b/object-file.c
    |index 8be57f48de..52315414f3 100644
    |--- a/object-file.c
    |+++ b/object-file.c
    --------------------------
    Patching file git-core/object-file.c using Plan A...
    Hunk #1 failed at 34.
    1 out of 1 hunks failed--saving rejects to helper/object-file.patched.c.rej
    done
    gmake[2]: *** [helper/helper.mk:104: helper/object-file.patched.c] Error 1
    
    PR:             270222
---
 devel/git-cinnabar/Makefile             |   2 +-
 devel/git-cinnabar/files/patch-git-2.40 | 124 ++++++++++++++++++++++++++++++++
 2 files changed, 125 insertions(+), 1 deletion(-)

diff --git a/devel/git-cinnabar/Makefile b/devel/git-cinnabar/Makefile
index 10fcb797153b..84f39404465a 100644
--- a/devel/git-cinnabar/Makefile
+++ b/devel/git-cinnabar/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	git-cinnabar
 DISTVERSION=	0.5.11
-PORTREVISION=	3
+PORTREVISION=	4
 CATEGORIES=	devel
 
 MAINTAINER=	jbeich@FreeBSD.org
diff --git a/devel/git-cinnabar/files/patch-git-2.40 b/devel/git-cinnabar/files/patch-git-2.40
new file mode 100644
index 000000000000..875927c5f745
--- /dev/null
+++ b/devel/git-cinnabar/files/patch-git-2.40
@@ -0,0 +1,124 @@
+https://github.com/glandium/git-cinnabar/commit/6c77d861b70a
+
+--- helper/cinnabar-fast-import.c.orig	2022-10-28 23:43:03 UTC
++++ helper/cinnabar-fast-import.c
+@@ -422,12 +422,17 @@ static void handle_changeset_conflict(struct hg_object
+ 	ensure_notes(&git2hg);
+ 	while ((note = get_note(&git2hg, git_id))) {
+ 		struct hg_object_id oid;
++		struct object_info oi = OBJECT_INFO_INIT;
+ 		enum object_type type;
+ 		unsigned long len;
+-		char *content = read_object_file_extended(
+-			the_repository, note, &type, &len, 0);
+-		if (len < 50 || !starts_with(content, "changeset ") ||
+-		    get_sha1_hex(&content[10], oid.hash))
++		char *content;
++		oi.typep = &type;
++		oi.sizep = &len;
++		oi.contentp = (void **) &content;
++		if ((oid_object_info_extended(
++			the_repository, note, &oi, OBJECT_INFO_DIE_IF_CORRUPT) == 0) &&
++		    (len < 50 || !starts_with(content, "changeset ") ||
++		     get_sha1_hex(&content[10], oid.hash)))
+ 			die("Invalid git2hg note for %s", oid_to_hex(git_id));
+ 
+ 		free(content);
+@@ -437,10 +442,12 @@ static void handle_changeset_conflict(struct hg_object
+ 			break;
+ 
+ 		if (!buf.len) {
+-			content = read_object_file_extended(
+-				the_repository, git_id, &type, &len, 0);
+-			strbuf_add(&buf, content, len);
+-			free(content);
++			if (oid_object_info_extended(
++					the_repository, git_id, &oi,
++					OBJECT_INFO_DIE_IF_CORRUPT) == 0) {
++				strbuf_add(&buf, content, len);
++				free(content);
++			}
+ 		}
+ 
+ 		strbuf_addch(&buf, '\0');
+--- helper/cinnabar-helper.c.orig	2022-10-28 23:43:03 UTC
++++ helper/cinnabar-helper.c
+@@ -1554,11 +1554,17 @@ static void upgrade_files(const struct old_manifest_tr
+ 		if (note && oidcmp(note, &entry.other_oid)) {
+ 			struct hg_file file;
+ 			struct strbuf buf = STRBUF_INIT;
++			struct object_info oi = OBJECT_INFO_INIT;
+ 			unsigned long len;
+ 			enum object_type t;
+ 			char *content;
+-			content = read_object_file_extended(
+-				the_repository, note, &t, &len, 0);
++			oi.typep = &t;
++			oi.sizep = &len;
++			oi.contentp = (void **) &content;
++			if (oid_object_info_extended(
++					the_repository, note, &oi,
++					OBJECT_INFO_DIE_IF_CORRUPT) != 0)
++				goto corrupted;
+ 			strbuf_attach(&buf, content, len, len);
+ 			hg_file_init(&file);
+ 			hg_file_from_memory(&file, &hg_oid, &buf);
+--- helper/hg-data.c.orig	2022-10-28 23:43:03 UTC
++++ helper/hg-data.c
+@@ -33,11 +33,16 @@ void hg_file_load(struct hg_file *result, const struct
+ void hg_file_load(struct hg_file *result, const struct hg_object_id *oid)
+ {
+ 	const struct object_id *note;
++	struct object_info oi = OBJECT_INFO_INIT;
+ 	char *content;
+ 	enum object_type type;
+ 	unsigned long len;
+ 	size_t metadata_len;
+ 
++	oi.typep = &type;
++	oi.sizep = &len;
++	oi.contentp = (void **) &content;
++
+ 	strbuf_release(&result->file);
+ 	hg_oidcpy(&result->oid, oid);
+ 
+@@ -47,9 +52,9 @@ void hg_file_load(struct hg_file *result, const struct
+ 	ensure_notes(&files_meta);
+ 	note = get_note_hg(&files_meta, oid);
+ 	if (note) {
+-		content = read_object_file_extended(
+-			the_repository, note, &type, &len, 0);
+-		if (!content)
++		if (oid_object_info_extended(
++				the_repository, note, &oi,
++				OBJECT_INFO_DIE_IF_CORRUPT) != 0)
+ 			die("Missing data");
+ 		strbuf_add(&result->file, "\1\n", 2);
+ 		strbuf_add(&result->file, content, len);
+@@ -64,9 +69,9 @@ void hg_file_load(struct hg_file *result, const struct
+ 	if (!note)
+ 		die("Missing data");
+ 
+-	content = read_object_file_extended(
+-		the_repository, note, &type, &len, 0);
+-	if (!content)
++	if (oid_object_info_extended(
++			the_repository, note, &oi,
++			OBJECT_INFO_DIE_IF_CORRUPT) != 0)
+ 		die("Missing data");
+ 
+ 	strbuf_add(&result->file, content, len);
+--- helper/object-file.c.patch.orig	2022-10-28 23:43:03 UTC
++++ helper/object-file.c.patch
+@@ -2,9 +2,9 @@ +++ b/object-file.c
+ index 8be57f48de..52315414f3 100644
+ --- a/object-file.c
+ +++ b/object-file.c
+-@@ -34,6 +34,8 @@
+- #include "promisor-remote.h"
++@@ -35,6 +35,8 @@
+  #include "submodule.h"
++ #include "fsck.h"
+  
+ +#define write_object_file_flags real_write_object_file_flags
+ +