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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions