diff --git a/clearml_agent/helper/package/external_req.py b/clearml_agent/helper/package/external_req.py index cfee106..b9f379a 100644 --- a/clearml_agent/helper/package/external_req.py +++ b/clearml_agent/helper/package/external_req.py @@ -92,21 +92,14 @@ class ExternalRequirements(SimpleSubstitution): vcs_url = req_line[4:] # reverse replace vcs_url = vcs_url[::-1].replace(fragment[::-1], '', 1)[::-1] - # remove ssh:// or git:// prefix for git detection and credentials - scheme = '' - full_vcs_url = vcs_url - if vcs_url and (vcs_url.startswith('ssh://') or vcs_url.startswith('git://')): - scheme = 'ssh://' # notice git:// is actually ssh:// - vcs_url = vcs_url[6:] + # notice git:// is actually ssh:// + if vcs_url and vcs_url.startswith('git://'): + vcs_url = vcs_url.replace('git://', 'ssh://', 1) from ..repo import Git - vcs = Git(session=session, url=full_vcs_url, location=None, revision=None) + vcs = Git(session=session, url=vcs_url, location=None, revision=None) vcs._set_ssh_url() - new_req_line = 'git+{}{}{}'.format( - '' if scheme and '://' in vcs.url else scheme, - vcs_url if session.config.get('agent.force_git_ssh_protocol', None) else vcs.url_with_auth, - fragment - ) + new_req_line = 'git+{}{}'.format(vcs.url_with_auth, fragment) if new_req_line != req_line: furl_line = furl(new_req_line) print('Replacing original pip vcs \'{}\' with \'{}\''.format( diff --git a/clearml_agent/helper/repo.py b/clearml_agent/helper/repo.py index 8a55af6..67d7cda 100644 --- a/clearml_agent/helper/repo.py +++ b/clearml_agent/helper/repo.py @@ -320,6 +320,7 @@ class VCS(object): self.url, new_url)) self.url = new_url return + # rewrite ssh URLs only if either ssh port or ssh user are forced in config if parsed_url.scheme == "ssh" and ( self.session.config.get('agent.force_git_ssh_port', None) or @@ -334,6 +335,9 @@ class VCS(object): print("Using SSH credentials - ssh url '{}' with ssh url '{}'".format( self.url, new_url)) self.url = new_url + return + elif parsed_url.scheme == "ssh": + return if not self.session.config.agent.translate_ssh: return @@ -343,7 +347,7 @@ class VCS(object): (ENV_AGENT_GIT_PASS.get() or self.session.config.get('agent.git_pass', None)): # only apply to a specific domain (if requested) config_domain = \ - ENV_AGENT_GIT_HOST.get() or self.session.config.get("git_host", None) + ENV_AGENT_GIT_HOST.get() or self.session.config.get("agent.git_host", None) if config_domain and config_domain != furl(self.url).host: return