Simplify fix by disallowing / in front of @ to match scp style

This commit is contained in:
Kalle Jepsen 2021-11-17 13:49:10 +01:00
parent 6d46b5b609
commit 46d2a5a10b

View file

@ -77,8 +77,8 @@ std::string fixURIForGit(std::string uri, EvalState & state)
/* Detects scp-style uris (e.g. git@github.com:NixOS/nix) and fixes /* Detects scp-style uris (e.g. git@github.com:NixOS/nix) and fixes
* them by removing the `:` and assuming a scheme of `ssh://` * them by removing the `:` and assuming a scheme of `ssh://`
* */ * */
static std::regex scp_uri("([^/].*)@(.*):(.*)"); static std::regex scp_uri("([^/]*)@(.*):(.*)");
if (uri[0] != '/' && std::regex_match(uri, scp_uri) && uri.find("://") == std::string::npos) if (uri[0] != '/' && std::regex_match(uri, scp_uri))
return fixURI(std::regex_replace(uri, scp_uri, "$1@$2/$3"), state, "ssh"); return fixURI(std::regex_replace(uri, scp_uri, "$1@$2/$3"), state, "ssh");
else else
return fixURI(uri, state); return fixURI(uri, state);