-
Notifications
You must be signed in to change notification settings - Fork 526
Description
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.