-
-
Notifications
You must be signed in to change notification settings - Fork 139
Description
Bug Report
Current Behavior
Currently the installer (at least the ps1 script for windows) tries to install scoop by cloning the repo only via HTTPS:
# ...
$SCOOP_PACKAGE_GIT_REPO = "https://github.com/ScoopInstaller/Scoop.git"
# ...
git clone -q $SCOOP_PACKAGE_GIT_REPO $SCOOP_APP_DIRIf the HTTPS transport protocol is disabled in the git configuration of a user/system, the installer breaks.
Expected Behavior
The installer should try to fallback to SSH.
Additional context/output
This is my installer output:
PS> irm get.scoop.sh | iex
Initializing...
Downloading ...
fatal: transport 'https' not allowed
fatal: transport 'https' not allowed
Creating shim...
Resolve-Path : Cannot find path 'C:\Users\u6\scoop\apps\scoop\current\bin\scoop.ps1' because it does not exist.
At line:309 char:21
+ $relativePath = Resolve-Path -Relative $path
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\u6\scoop\a…rrent\bin\scoop.ps1:String) [Resolve-Path], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.ResolvePathCommand
Resolve-Path : Cannot find path 'C:\Users\u6\scoop\apps\scoop\current\bin\scoop.ps1' because it does not exist.
At line:311 char:21
+ $absolutePath = Resolve-Path $path
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\u6\scoop\a…rrent\bin\scoop.ps1:String) [Resolve-Path], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.ResolvePathCommand
Adding ~\scoop\shims to your path.
Scoop was installed successfully!
Type 'scoop help' for instructions.
Running git config --get-regexp "protocol\..*" on a system could return something like this:
protocol.http.allow never
protocol.https.allow never
protocol.git.allow never
protocol.file.allow never
protocol.ssh.allow always
... or git config --get protocol.https.allow:
never
... means that HTTPS cannot be used to clone repos.
The actual capability of cloning via HTTPS could be also determined by the git config value protocol.allow, if set, or the env variable GIT_PROTOCOL_FROM_USER if the value is user.
See here: https://git-scm.com/docs/git-config#Documentation/git-config.txt-protocolallow
Possible Solution
Instead of trying to parse the git configuration, which could be cumbersome, a check like !$? -or $LASTEXITCODE -eq 128 right after the git clone command should be sufficient.
In case of error you can then proceed with cloning via SSH (git@github.com:ScoopInstaller/Scoop.git).
System details
Windows version: 11 (Microsoft Windows [Version 10.0.22621.1702])
OS architecture: x64
PowerShell version: 7.3.4
Additional software: git version 2.40.1.windows.1, OpenSSH_for_Windows_8.6p1, LibreSSL 3.4.3
Scoop Configuration
{
"last_update": "2023-05-30T15:49:12.9478507+02:00"
}