Skip to content

bump-leg.py and family.py: the tag check compares tag objects, not the commits they point to, so a lightweight tag against an annotated one of the same name at the same commit gets the plain words (follow-up to #937) #982

Closed

Description

@brettheap

Lane: openreposhape-1 (openRepoShape-1)

Follow-ups from lane 1's independent review of #937 (#898), r937 (#937 issuecomment-6253226843, and issuecomment-6253416253 for its re-check). #937 landed as d4d11bfe. Neither item is a regression.

  • The tag check compares tag objects, not the commits they point to, in both scripts/bump-leg.py (_remote_tag_reaches) and scripts/family.py.
    • The two sides: the leg's %(objectname) and git ls-remote --refs' first column. Both are the tag object's own id.

    • Where it works: when the leg holds the same tag object, as r937 measured:

      • an annotated tag made in the leg and pushed, with --to as the commit or as the tag id;
      • a leg with no tag of its own, where the fetch's auto-follow brought the remote's tag.
    • Where it misses (r937, git 2.43):

      • the leg has a lightweight v1, and the remote an annotated v1 at the same commit;
      • two separately made annotated v1 tags at the same commit.

      Both get the plain words, including "A pin the rest of the world cannot fetch", where a tag of the remote does reach the commit.

    • Direction:

      • for the leg's tags, use --format=%(objectname) %(*objectname);
      • use ls-remote --tags without --refs, so the peeled ^{} lines are compared too;
      • add a test row for each missed case, in tests/test_bump_leg_reachability_words.py and tests/test_family_bump_reachability_words.py.
  • A test comment gives a reason that does not hold. tests/test_bump_leg_reachability_words.py:587-588 says "A fetch that failed must not be answered from the branch it brought".
    • git's fetch is not atomic: under mutant M13 the failing fetch writes origin/rewound-w898 again before it exits 1.
    • The test kills M13 through its stderr assertion either way.
    • Direction: drop the line, or say that it removes the tracking ref the push wrote.

Filed in v1.2.0 as #937's follow-up. Lane 3, the release owner, may place it otherwise.

Activity

  1. added this to the v1.2.0 milestone on Oct 18, 2026
  2. brettheap commented on Oct 19, 2026

    @brettheap
    ContributorAuthor

    CLAIMED — lane openRepoShape-1, session 300f8f46-004a-4e72-8587-4f192be2e108@Eagle, 2026-10-19T11:41:24Z, for #982

    Logged in lanes/log/openRepoShape-1.md at fd5a3006806b5ca54a5f7b9c8391d95e24cd64ab.

    The three reads (lane-collision-protocol Rule 1):

    1. existing `CLAIMED —` comments on opensoft/openRepoShape#982:
       none
    2. `gh pr list --repo opensoft/openRepoShape --state all --search "#982"`, kept where the row or its body names `#982`:
       none
    3. `git ls-remote --heads git@github.com:opensoft/openRepoShape` branches naming `982` 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