Subject: Re: [PATCH v3] revision: add `--ignore-missing-links` user option

From: Junio C Hamano <[email-masked]>
Date: Tue, 19 Sep 2023 08:13:39 -0700

Karthik Nayak <[email-masked]> writes:

> If I remove the hardcoding, it would mean that
> `--ignore-missing-links` would skip missing commits but for
> non-commits objects, the user would have to pass
> `--missing=allow-any` else rev-list would still error out with a
> missing object error.
>
> Don't you think this would be confusing for the user?  I'm happy
> to send a revised version removing this hardcoding if you still
> think otherwise :)

Yes.  This is an example of flexibility and ergonomics at odds, and
for a low-level plumbing like rev-list, I would prefer not to limit
the flexibility unnecessarily.

I do not care about the ability to pass allow-any here.  But when
you traverse a range A..B with the --ignore-missing-links option,
the reporting mechanism based on the --boundary cannot tell which
ones are at the usual "traversal boundaries" and which ones are ones
beyond the broken links, can it?  If you allowed the users to pass
'print', then those reported with '?' prefix would be the missing
ones.  The ones that are reported with '-' prefix may still be
mixture of the two kinds, but you can now subtract one set from the
other set to see which ones are true boundaries and which ones are
missing.  The hardcoded "we do not let __ma() logic to kick in"
makes it impossible, which is what I find disturbing.

Thanks.