Subject: Re: [BUGREPORT] Why is git-push fetching content?

From: Sean Allred <[email-masked]>
Date: Sat, 08 Jul 2023 03:39:19 -0500

Following up with the results of my bisect (more discussion below). I'm
forced to conclude this may somehow have never worked as I'm expecting
(even though I do recall it working well in a long-gone environment),
but I'm very much hoping I just did the bisect incorrectly. (It's not a
feature I need to use much.)

So, is this a bug or is this working as intended for a good reason?

Sean Allred <[email-masked]> writes:
> Thanks for the replies. I'd like to bump this up again. This has come up
> in a new context and I don't see a viable workaround for us that doesn't
> involve a rewrite of the process and an excessive amount of new
> infrastructure.
>
> I have a feeling this is somehow a general issue with promisor remotes,
> though I don't know enough about how they work to know where to start
> investigation. I've got what I believe to be minimal reproduction steps
> below.
>
> [...]
>
> I believe the following can be used with git-bisect to determine if this
> truly ever worked or is a regression:
>
>     setup:
>         #!/bin/bash
>
>         repo="https://github.com/vermiculus/testibus.git"
>         repo_dir="~/path/to/repo"
>
>         git clone --no-checkout --depth=1 --no-tags --filter=tree:0 "$repo" "$repo_dir"
>         git -C "$repo_dir" remote set-url origin unreachable
>
>     bisect script:
>         git -C "$repo_dir" rev-list --objects --all
>
>         (obviously using the just-built git)
>
> I'm going to start running this bisect, but I suspect it will take a
> while, so I wanted to get this out there.

I ended up using a bisect script that looks like this

    #!/bin/bash
    make clean
    NO_GETTEXT=1 make -j8 || exit 125
    ./bin-wrappers/git -C "$1" rev-list --objects --all || exit 1
    git rev-parse HEAD >> ../good-commits

and running

    git bisect start main 637fc4467e57872008171958eda0428818a7ee03
    git bisect run ../bisect-script.sh ~/tmp/testibus/

It took less time than I thought, but unfortunately I was never able to
actually find a 'good' commit. I arbitrarily chose "partial-clone:
design doc" (Jeff Hostetler, Dec 14 2017) as the first commit to the
partial-clone design document (under the assumption that it worked at
some point). If potentially lying to git-bisect in this way is
especially liable to bust it, I can start the exponentially-more-
expensive process of testing every commit along --first-parent, but I
suspect this may have never worked as I'm expecting.

--
Sean Allred