On Mon, Sep 25, 2023 at 6:57 PM Junio C Hamano <gitster@xxxxxxxxx> wrote: > > Karthik Nayak <karthik.188@xxxxxxxxx> writes: > > > Let me prefix with saying that I was partly wrong. `--missing` does work for > > trees, only that it's ineffective when used along with the > > `ignore_missing_links` bit. > > > > But for commits, `--missing` was never configured to work with. I > > did a quick look at the code, we can do something like this for > > commits too, i.e. add support for the `--missing` option. We'll > > have to add a new flag (maybe MISSING) so it can be set during > > within `repo_parse_commit_gently` so we can parse this as a > > missing object in rev-list.c and act accordingly. > > Do you mean that process_parents() would now throw such a commit to > the resulting list successfully instead of omitting when "--missing" > is requested? That sounds like a right thing to do but at the same > time is a fix with major impact. Yes, but with appropriate flag added. Which will be a new flag. > I do not offhand know what the > ramifications are, for example, when bitmap traversal is in use (I > assume such a missing commit would not be catalogued in the bitmap?). > If there is a missing commit or object, will there even be a bitmap? I can think of the two scenarios: 1. Object is missing before bitmap creation: In such a scenario, the bitmap doesn't get created, since an object is missing. Could be any type of object. 2. Object is missing after bitmap creation: In this case, the bitmap already exists and rev-list won't even know that the commit is missing and simply output the objects as if the objects exist. Overall, this makes sense, but curious to hear what Taylor has to say. I also might post a patch series in this direction to consolidate our thoughts and get a feedback from the list.