You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
shape-doctor.py: the doctor's git calls on a partial clone of the standard can lazy-fetch wherever a read is not already guarded; set GIT_NO_LAZY_FETCH=1 for the doctor's own git children so "the doctor fetches nothing" holds by construction #787
Goal: "the doctor fetches nothing" holds for every git command the doctor itself runs on a partial clone of the standard, by construction rather than by guarding each read. Only the NEXT lines it prints for a person may fetch.
Filed by lane openRepoShape-3 under v1.1.1, on Brett Heap's word of 2026-10-16T13:35:28Z ("yes create v1.1.1"). Lane 3's reviewer RV-f raised it as #754's N3, and again as N3 on #773 (#773 (comment)). #773 deferred it because it changes the environment of every row.
RV-f measured that git 2.43 here honours GIT_NO_LAZY_FETCH=1. With it set, for-each-ref --contains prints "lazy fetching disabled" and makes 0 fetches. The variable dates from git 2.44 or earlier; check the first version.
Any future read added to a row, in the doctor or in update-shape.py's Upstream as the doctor calls it, can lazy-fetch again unless it is guarded too.
What to do:
Set GIT_NO_LAZY_FETCH=1 in the environment of every git child the doctor starts for its own reads: the doctor's git_out / git_answer helpers, and update-shape.py's reads where the doctor drives them.
Do not set it in any line the doctor PRINTS for a person, since the NEXT fetch --refetch … must fetch.
Check every row still answers the same on a full clone, and on a partial clone the same as today. A read that would now fail with "lazy fetching disabled" must become the existing CANNOT ANSWER row, not a traceback.
Tests: a partial clone with a remote out of reach, where every row is asked and GIT_TRACE2_EVENT (or rev-list --missing=print before and after) shows no fetch.
CLAIMED — lane openRepoShape-3, session b30e8b49-f249-4668-adb1-1dbfa93c09e1@Eagle, 2026-10-17T05:09:43Z, for #787
Logged in lanes/log/openRepoShape-3.md at d0840225de50b3620993224db00ae62258f43270.
The three reads (lane-collision-protocol Rule 1):
1. existing `CLAIMED —` comments on opensoft/openRepoShape#787:
none
2. `gh pr list --repo opensoft/openRepoShape --state all --search "#787"`, kept where the row or its body names `#787`:
none
3. `git ls-remote --heads git@github.com:opensoft/openRepoShape` branches naming `787` as a whole token:
none
Activity
brettheap commentedon Oct 17, 2026
CLAIMED — lane openRepoShape-3, session b30e8b49-f249-4668-adb1-1dbfa93c09e1@Eagle, 2026-10-17T05:09:43Z, for #787
Logged in
lanes/log/openRepoShape-3.mdatd0840225de50b3620993224db00ae62258f43270.The three reads (lane-collision-protocol Rule 1):
shape-doctor.py: `history_left_out` sits with the partial-clone reade…
shape-doctor.py: the `partial` `why` says the pin's history, HEAD's i…
shape-doctor.py: every git the doctor starts runs with `GIT_NO_LAZY_F…
docs/release-notes/v1.1.1.md: the v1.1.1 notes take RV883's NIT list …