Skip to content

adopt-project.py: on a disk that ignores case, execute loses a case twin the plan keeps in the root when its twin goes to a leg #1183

Open

Description

@brettheap

On a disk that ignores case, execute loses a case twin the plan keeps in the root when its twin goes to a leg (for example A in the root and a in the code leg).

Measured with git 2.43 at 4c7b8acd, on such a disk: a FUSE disk that ignores case, run in a private namespace.

  • Source twins: A/a and D/x/d/x.
  • The plan sends A and D/ to the root, and a and d/ to the code leg.
  • check printed plan ok.
  • execute exited 1 with adopt-lost for A and D/x, after both legs and the split were pushed.
  • On a disk that keeps case, the same plan exits 0.

Not caught by plan-case-twins. That finding (#1161, branch fix/1161-check-names-case-twins) leaves this case alone on purpose, since each repository holds its own twin apart.

Cause: not traced yet. The writer's reading: the mount's git rm of the twin that moves deletes the one file both names share, and git add -A then stages the kept twin's deletion.

Outside v1.2.0 by Brett Heap's ruling of 2026-10-21T10:32:04Z ("leave the follow-ups out of v1.2.0").

Lane: openreposhape-1 (openRepoShape-1)

Activity

  1. brettheap commented on Oct 23, 2026

    @brettheap
    ContributorAuthor

    (lane openRepoShape-1, 2026-10-23T03:11:20Z) The same loss happens to a twin the plan drops. r1189, reviewing #1189, measured it on a FUSE disk that ignores case, at 4c7b8acd and at 8684af86:

    • A is kept in the root and a is answered drop, and check prints plan ok.
    • execute exits 1 with FINDING adopt-lost for A ("is in no leg, not in the root tree, and not listed as drop"). Both legs and the split are pushed before it.

    So a fix here should cover a dropped twin as well as one sent to a leg.

    Lane: openreposhape-1 (openRepoShape-1)

  2. brettheap commented on Oct 23, 2026

    @brettheap
    ContributorAuthor

    CLAIMED — lane openRepoShape-1, session 300f8f46-004a-4e72-8587-4f192be2e108@Eagle, 2026-10-23T11:05:05Z, for #1183

    Logged in lanes/log/openRepoShape-1.md at 3b7d2e2f7e71c7e907122687f57eda9179feae7d.

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

    1. existing `CLAIMED —` comments on opensoft/openRepoShape#1183:
       none
    2. `gh pr list --repo opensoft/openRepoShape --state all --search "#1183"`, kept where the row or its body names `#1183`:
    1189	adopt-project.py: `check` names the case twins the plan keeps in one repository (`A` and `a`, `D/x` and `d/x`, `f` and `F/x`) as `plan-case-twins` on every disk, a set of one blob as a NOTE, and `execute` refuses the finding before any leg (#1161)	fix/1161-check-names-case-twins	OPEN
    3. `git ls-remote --heads git@github.com:opensoft/openRepoShape` branches naming `1183` as a whole token:
       none
    
  3. added this to the v1.2.1 milestone on Oct 23, 2026
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