Skip to content

make siblings and family.py siblings: clone each member on its tracking branch, warn before cloning outside a <Family> folder, and run the holder's pinned siblings.py #543

Closed

Description

@brettheap

siblings.py is a pinned copy in every family holder, so these go in one change and one re-pin.

From the v1.1.0 triage of the v1.0.0 known limits on #459. One pull request covers the lines below.

Lines

  • make siblings, holder not in a <Family> folder: clones members first, prints mv lines; re-run clones again. Where: templates/family-root/scripts/siblings.py _run_placement (:906-930), parent_folder_warning. Effort S; all. On main 3121945: Placement still runs before the warning, which mentions the re-run but not the first clones it leaves; nothing is lost. (source)
  • auF-13: make siblings clones with plain git clone, leaving the member on its default branch, not its tracking branch. Where: templates/family-root/scripts/siblings.py:455; AGENTS.md:403. Effort S; all. On main 3121945: The clone has no -b; README:873 now speaks only of the legs, but AGENTS.md:403 still says "on its tracking branch". (source)
  • auF-14: family.py siblings runs the standard's siblings.py, not the holder's pinned copy; its remedy says otherwise. Where: scripts/family.py cmd_siblings (:4680-4716), SIBLINGS_SCRIPT (:887). Effort S; all. On main 3121945: SIBLINGS_SCRIPT is under SHAPE_ROOT/templates, and siblings-script-missing still says it "runs the holder's own copy". (source)

Note: #461's fixture line about cloning a just-pushed bare remote by plain path also names siblings.py:455, the same git clone. siblings.py is product code, so that half belongs here.

Each line above is marked → this issue on its tracking issue. Tick it there too when this closes.

The lines as written on the tracking issues

AT-family N6: make siblings in a holder whose folder is not named after the family clones the members first, then prints mv lines that move only the holder (templates/family-root/scripts/siblings.py:736-780), so following them and re-running leaves a second set of clones beside the moved holder; the warning says the siblings stay in the old folder but not that a re-run clones them again.
— #459, body

auF-13: make siblings clones a member with a plain git clone --recurse-submodules (templates/family-root/scripts/siblings.py:453-456). That checks out the remote's default branch, not the member's tracking_branch; the two differ when a member tracks another branch. README.md:873-874 and AGENTS.md:392-393 say "on its tracking branch".
— #459, comment

auF-14: family.py siblings runs the STANDARD checkout's templates/family-root/scripts/siblings.py (family.py:707-708, :3922), not the holder's pinned copy. So a holder pinned at an older shape runs different code under the two entry points. The siblings-script-missing remedy (family.py:3916-3918) wrongly says the subcommand runs the holder's own copy.
— #459, comment

Activity

  1. added this to the v1.1.0 milestone on Oct 14, 2026
  2. brettheap commented on Oct 14, 2026

    @brettheap
    ContributorAuthor

    CLAIMED — lane openRepoShape-5, session 50cede29-ab82-4ca3-9f67-d98e1a58c8d2@Eagle, 2026-10-14T22:31:00Z, for #543

    Logged in lanes/log/openRepoShape-5.md at f75c77c692e78f35de6658284fcd8ddb78e040f2.

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

    1. existing `CLAIMED —` comments on opensoft/openRepoShape#543:
       none
    2. `gh pr list --repo opensoft/openRepoShape --state all --search "#543"`, kept where the row or its body names `#543`:
    554	tests: every test that clones a just-pushed local remote by its plain path now clones it with `clone_just_pushed`, so the macOS `failed to copy file` race of #440 cannot reach it; `load_without_bytecode` keeps the doctor's and the Windows-path tests' loads of the family root's scripts from writing `.pyc` into the templates; the not-a-list doctor cases hold INVALID, exit 1; and `GOOD_KEYS` holds th	l3-544-test-hygiene	OPEN
    3. `git ls-remote --heads git@github.com:opensoft/openRepoShape` branches naming `543` 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