dev-environments
dev-environments copied to clipboard
Create a Dev Environment form does not allow Git URLs that do not contain a slash
Description
When using the Create a Dev Environment form, it allows you to use an existing Git repo, however it does not allow you to press the Continue button unless it deems that your Git URL is valid. Unfortunately, the Git URL validation is flawed since it requires that your Git URL contain at least one slash.
For example, the following Git URL is valid, however the Create a Dev Environment form does not consider it to be valid.
[email protected]:my-project.git
However, the form does consider the following Git URL to be valid.
[email protected]:my-username/my-project.git
Not all Git servers follow the GitHub convention of username/repo
paths. My personal Git server does not follow this convention because it only contains my own projects, so there is no need for a username in the path.
Reproduce
- Open Docker Desktop.
- Select Dev Environments from the menu.
- Ensure Existing Git repo is selected.
- Enter a valid Git URL that does not contain a slash. (e.g. [email protected]:my-project.git)
- Note that the Continue button is disabled.
- Enter a valid Git URL that does contain a slash. (e.g. [email protected]:my-username/my-project.git)
- Note that the Continue button is enabled.
Expected behavior
The Create a Dev Environment form should validate Git URLs correctly. Specifically, it should allow valid Git URLs that do not contain a slash.
docker version
Client:
Cloud integration: v1.0.35-desktop+001
Version: 24.0.5
API version: 1.43
Go version: go1.20.6
Git commit: ced0996
Built: Fri Jul 21 20:36:24 2023
OS/Arch: windows/amd64
Context: default
Server: Docker Desktop 4.22.1 (118664)
Engine:
Version: 24.0.5
API version: 1.43 (minimum version 1.12)
Go version: go1.20.6
Git commit: a61e2b4
Built: Fri Jul 21 20:35:45 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.21
GitCommit: 3dce8eb055cbb6872793272b4f20ed16117344f8
runc:
Version: 1.1.7
GitCommit: v1.1.7-0-g860f061
docker-init:
Version: 0.19.0
GitCommit: de40ad0
docker info
Client:
Version: 24.0.5
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.11.2-desktop.1
Path: C:\Program Files\Docker\cli-plugins\docker-buildx.exe
compose: Docker Compose (Docker Inc.)
Version: v2.20.2-desktop.1
Path: C:\Program Files\Docker\cli-plugins\docker-compose.exe
dev: Docker Dev Environments (Docker Inc.)
Version: v0.1.0
Path: C:\Program Files\Docker\cli-plugins\docker-dev.exe
extension: Manages Docker extensions (Docker Inc.)
Version: v0.2.20
Path: C:\Program Files\Docker\cli-plugins\docker-extension.exe
init: Creates Docker-related starter files for your project (Docker Inc.)
Version: v0.1.0-beta.6
Path: C:\Program Files\Docker\cli-plugins\docker-init.exe
sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.)
Version: 0.6.0
Path: C:\Program Files\Docker\cli-plugins\docker-sbom.exe
scan: Docker Scan (Docker Inc.)
Version: v0.26.0
Path: C:\Program Files\Docker\cli-plugins\docker-scan.exe
scout: Command line tool for Docker Scout (Docker Inc.)
Version: 0.20.0
Path: C:\Program Files\Docker\cli-plugins\docker-scout.exe
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 24.0.5
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 3dce8eb055cbb6872793272b4f20ed16117344f8
runc version: v1.1.7-0-g860f061
init version: de40ad0
Security Options:
seccomp
Profile: unconfined
Kernel Version: 5.15.90.1-microsoft-standard-WSL2
Operating System: Docker Desktop
OSType: linux
Architecture: x86_64
CPUs: 16
Total Memory: 15.59GiB
Name: docker-desktop
ID: 977a93cb-dd8e-40af-8649-6da6a5ddb95e
Docker Root Dir: /var/lib/docker
Debug Mode: false
HTTP Proxy: http.docker.internal:3128
HTTPS Proxy: http.docker.internal:3128
No Proxy: hubproxy.docker.internal
Experimental: false
Insecure Registries:
hubproxy.docker.internal:5555
127.0.0.0/8
Live Restore Enabled: false
WARNING: No blkio throttle.read_bps_device support
WARNING: No blkio throttle.write_bps_device support
WARNING: No blkio throttle.read_iops_device support
WARNING: No blkio throttle.write_iops_device support
WARNING: daemon is not using the default seccomp profile
Diagnostics ID
F97CE84A-FE0C-4C8E-9AD8-DC238027E97A/20230911015842
Additional Info
[email protected]:my-project.git is a valid Git URL in syntax only. It does not actually point to an existing Git repo.
Actually, the rabbit hole goes deeper. Technically [email protected]:my-project.git is not a Git URL. It's more like an scp
source. However, git clone
accepts it as a repository source.
The Create a Dev Environment form says that you should be able to provide an HTTPS or SSH URL, however when I do use a valid SSH URL (e.g. ssh://[email protected]/~/my-project.git), Docker Desktop just hangs during the Setup step.
Preparing to clone inside a volume
Installing credential helpers...
done
Cloning into '/com.docker.devenvironments.code'...
Granted, ssh://[email protected]/~/my-project.git does not point to an existing Git repo. I'm just using it to demonstrate the type of URL I'm using to access my personal Git server. In my tests, I'm using real sources that work with git clone
.
Here's the types of strings I've provided to the Create a Dev Environment form, none of which work with the form, but they do work with git clone
.
- [email protected]:my-project.git (Does not enable the Continue button.)
- [email protected]:~/my-project.git (Perpetually hangs during the Setup step.)
- ssh://[email protected]/~/my-project.git (Perpetually hangs during the Setup step.)
- [email protected]:my-project.git (Does not enable the Continue button.)
-
[email protected]:~/my-project.git (Resolves to the URL
https://github.com/g/
, which doesn't exist.) - ssh://[email protected]/~/my-project.git (Perpetually hangs during the Setup step.)
I have found no way to access the Git repos in my personal Git server via this form.
My best advice would be to stop trying to do stuff with the provided URL, and just pass it to git clone
. Or, at the very least, stop assuming everyone is only pulling from GitHub.
Hi, thanks for the report! I'll be transferring this issue to the dev environments issue tracker!