Skip to content

Repository cannot be cloned onto a Windows filesystem without WSL. #62135

@cat5inthecradle

Description

@cat5inthecradle

Because the repository contains a large number of level files containing a colon (":") in the filename, it cannot be cloned onto a Windows filesystem without errors.

Cloning into 'code-dot-org'...
...
error: invalid path 'dashboard/config/levels/custom/applab/CS Principles: Functions.level'
fatal: unable to checkout working tree
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry with 'git restore --source=HEAD :/'

Workaround - Use WSL

Windows Subsystem for Linux (WSL) lets developers run a GNU/Linux environment -- including most command-line tools, utilities, and applications -- directly on Windows, unmodified, without the overhead of a traditional virtual machine or dual-boot setup. - WSL Documentation

By cloning the repository into your WSL Ubuntu environment, you will not have issues with the filenames. If you want to run the project on your Windows workstation at all, you're going to need WSL.

However, if we make progress implementing a workable Dev Containers configuration, WSL may feel more like an unnecessary layer of complexity.

Potential Fix

Dave described a potential fix, and another benefit of changing these filenames.

if we were determined to get these filenames windows-compatible, the shortest path would probably be to do what we do for dsl-defined levels, which is to have the filename be different from the level name, and move the level name into a serialized field within the file.

so, CS Principles: Functions.level becomes CS Principles- Functions.level containing a field "name": "CS Principles: Functions"

while we're in there we could take the spaces out of them so I don't have to consult the manual every time I want to run find and grep

However, this has some negative consequences.

this work would remove a layer from our windows dev experience and add one to our level seeding / serialization logic, possibly introducing new issues as level filenames can now collide even if the level names are different. I think we'll want to have a strong case for this

I don't daily drive Windows, so I personally can't make a strong case for fixing this, but I've created this GitHub Issue as a place to have that conversation and collect feedback from other contributors who encounter this issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions