Skip to content

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

Closed

Description

@brettheap

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.

What is known:

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.

Lands after #773 (#754).

Activity

  1. added this to the v1.1.1 milestone on Oct 17, 2026
  2. brettheap commented on Oct 17, 2026

    @brettheap
    ContributorAuthor

    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
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions