From: "Marc Becker via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Marc Becker <becm@gmx.de>, Marc Becker <becm@gmx.de>
Subject: [PATCH] fast-import: fix lookup for new commits
Date: Sat, 10 Oct 2026 17:24:38 +0000 [thread overview]
Message-ID: <pull.2252.git.1791653078449.gitgitgadget@gmail.com> (raw)
From: Marc Becker <becm@gmx.de>
Queries for commits created during the same 'git fast-import' session
result in a crash:
< reset refs/heads/newbranch
< from <new-commit-oid>
> fatal: not a valid commit: <new-commit-oid>
Getting file content for commit has no issue (working implementation):
< ls <new-commit-oid> file-in-new-commit.txt
> {file content}
During import, new objects may not (yet) be reachable via the ODB layer.
Try to resolve requested tag/commit via object cache first
to avoid crash and (eventually) improve lookup speed.
Signed-off-by: Marc Becker <becm@gmx.de>
---
fast-import: fix lookup for new commits
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-2252%2Fbecm%2Ffix-fast-import-commit-from-existing-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-2252/becm/fix-fast-import-commit-from-existing-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/2252
builtin/fast-import.c | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/builtin/fast-import.c b/builtin/fast-import.c
index fbd919982c..4b93148551 100644
--- a/builtin/fast-import.c
+++ b/builtin/fast-import.c
@@ -292,6 +292,8 @@ static void fast_import_state_init(struct fast_import_state *state,
state->option = option;
}
+static struct object_entry *dereference(struct object_entry *oe, struct object_id *oid);
+
static void parse_argv(struct fast_import_state *state);
static void parse_get_mark(struct fast_import_state *state, const char *p);
static void parse_cat_blob(struct fast_import_state *state, const char *p);
@@ -2658,12 +2660,20 @@ static void parse_from_existing(struct branch *b)
oidclr(&b->branch_tree.versions[1].oid, the_repository->hash_algo);
} else {
unsigned long size;
- size_t size_st = 0;
char *buf;
+ struct object_entry *e = find_object(&b->oid);
- buf = odb_read_object_peeled(the_repository->objects, &b->oid,
- OBJ_COMMIT, &size_st, &b->oid);
- size = cast_size_t_to_ulong(size_st);
+ while (e && e->type == OBJ_TAG)
+ e = dereference(e, &b->oid);
+
+ if (e && e->type == OBJ_COMMIT && e->pack_id != MAX_PACK_ID) {
+ buf = gfi_unpack_entry(e, &size);
+ } else {
+ size_t size_st = 0;
+ buf = odb_read_object_peeled(the_repository->objects, &b->oid,
+ OBJ_COMMIT, &size_st, &b->oid);
+ size = cast_size_t_to_ulong(size_st);
+ }
parse_from_commit(b, buf, size);
free(buf);
}
base-commit: 6de20f6092dcf9bdb1c8efe03db4b70c82b423dd
--
gitgitgadget
next reply other threads:[~2026-10-10 17:24 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-10 17:24 Marc Becker via GitGitGadget [this message]
2026-10-11 19:38 ` [PATCH] fast-import: fix lookup for new commits Aniket Gupta
2026-10-12 22:50 ` [PATCH v2] fast-import: fix lookup for new commits and tags Marc Becker via GitGitGadget
2026-10-13 0:08 ` Junio C Hamano
2026-10-13 1:39 ` Junio C Hamano
-- strict thread matches above, loose matches on Subject: below --
2026-10-11 19:22 [PATCH] fast-import: fix lookup for new commits Aniket Gupta
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=pull.2252.git.1791653078449.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=becm@gmx.de \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.