Skip to content

Handle Windows local-view collapse for case-sensitive repositories #87

Description

@woutervanranst

Problem

Arius should be able to browse and restore repositories created on case-sensitive platforms such as Linux, even when the user is running on Windows.

The repository model should keep repository-relative paths case-sensitive. The harder problem is the local filesystem merge/view on Windows, where the host filesystem is case-insensitive and may collapse paths that are distinct in the repository (for example Foo.txt and foo.txt).

This should not be fixed by making repository path identity case-insensitive in unrelated flows such as hydration-status lookups.

Why this matters

We need a clear and correct boundary between:

  • repository identity: case-sensitive, platform-native to the archived repository
  • Windows local view: case-insensitive collapse of the host filesystem state
  • restore pipeline: responsible for handling Windows conflicts when restoring case-distinct repository paths onto a case-insensitive filesystem

Without that separation, Explorer/listing behavior can silently misrepresent local state or hide repository distinctions.

Areas to investigate

  • ListQueryHandler local/cloud merge behavior
  • LocalFileSnapshotBuilder keying and collision behavior
  • RelativeFileSystem enumeration on Windows
  • Explorer presentation of repository entries that differ only by case
  • Restore conflict behavior for case-distinct repository paths on Windows

Questions to answer

  • How should Explorer present a Linux-native repository containing paths that differ only by case when running on Windows?
  • How should the local filesystem view collapse or annotate case-colliding paths?
  • What invariants should be preserved between list, Explorer, and restore behavior?
  • Which layer should detect and surface Windows-only conflicts?

Acceptance criteria

  • Repository-relative paths remain case-sensitive in domain logic.
  • Windows local-state merge behavior is explicitly defined for case-colliding paths.
  • Explorer/list behavior is covered by focused tests for case-sensitive repository entries on Windows.
  • Restore behavior for case-distinct repository paths on Windows is documented and/or covered by tests.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions