On 15/06/2022 22:01, Junio C Hamano wrote: > We by grave mistake at 31c8221a (mktree: validate entry type in > input, 2009-05-14) started insisting on inspecting objects even when > allow-mising was given. I do not think it was sensible, given why > we had "--missing" as an option to allow users to say "you do not > have to be too paranoid". > > The codebase is so distant but I think we should probably do a moral > revert/reconstruct of that commit so that the extra paranoia of the > said commit applies only when "--missing" is not in effect, or > something like that. -- >8 -- Subject: [PATCH] mktree: Make '--missing' behave as documented Do not make use of the object store to verify object type for 'allow_missing' objects in mktree_line(). GIT-MKTREE(1) documents '--missing' as disabling "verif[ication] that each tree entry's sha1 identifies an existing object". This change retains the check for '<mode>' and '<type>' for 'allow_missing' objects as this check is merely input validation that avoids interrogating the object store. Signed-off-by: Richard Oliver <roliver@xxxxxxxx> --- builtin/mktree.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/builtin/mktree.c b/builtin/mktree.c index 902edba6d2..f41fda6e7d 100644 --- a/builtin/mktree.c +++ b/builtin/mktree.c @@ -116,15 +116,12 @@ static void mktree_line(char *buf, int nul_term_line, int allow_missing) path, ptr, type_name(mode_type)); } - /* Check the type of object identified by sha1 */ - obj_type = oid_object_info(the_repository, &oid, NULL); - if (obj_type < 0) { - if (allow_missing) { - ; /* no problem - missing objects are presumed to be of the right type */ - } else { + if (!allow_missing) { + /* Check the type of object identified by sha1 */ + obj_type = oid_object_info(the_repository, &oid, NULL); + if (obj_type < 0) { die("entry '%s' object %s is unavailable", path, oid_to_hex(&oid)); } - } else { if (obj_type != mode_type) { /* * The object exists but is of the wrong type. -- 2.36.1.467.g4f6db706e6.dirty