Merge pull request !2785 from rhodecode-enterprise-ce fix/ssh-port-default

fix: specify default ssh port for clone urls
This commit is contained in:
Andrii Verbytskyi 2025-07-31 18:32:45 +00:00
commit b1f8c0f10a
3 changed files with 30 additions and 1 deletions

View file

@ -23,6 +23,8 @@ Some simple helper functions
import collections
import datetime
import os
import dateutil.relativedelta
import logging
import re
@ -498,6 +500,10 @@ def get_clone_url(request, uri_tmpl, repo_name, repo_id, repo_type, **override):
parsed_url = urlobject.URLObject(qualified_home_url)
decoded_path = safe_str(urllib.parse.unquote(parsed_url.path.rstrip("/")))
default_ssh_port = ""
if os.environ.get("RC_SSH_PORT"):
default_ssh_port = f":{os.environ['RC_SSH_PORT']}"
args = {
"scheme": parsed_url.scheme,
"user": "",
@ -508,6 +514,7 @@ def get_clone_url(request, uri_tmpl, repo_name, repo_id, repo_type, **override):
"prefix": decoded_path,
"repo": repo_name,
"repoid": str(repo_id),
"ssh_port": default_ssh_port,
"repo_type": repo_type,
}
args.update(override)

View file

@ -1915,7 +1915,7 @@ class Repository(Base, BaseModel):
)
DEFAULT_CLONE_URI = "{scheme}://{user}@{netloc}/{repo}"
DEFAULT_CLONE_URI_ID = "{scheme}://{user}@{netloc}/_{repoid}"
DEFAULT_CLONE_URI_SSH = "ssh://{sys_user}@{hostname}/{repo}"
DEFAULT_CLONE_URI_SSH = "ssh://{sys_user}@{hostname}{ssh_port}/{repo}"
STATE_CREATED = "repo_state_created"
STATE_PENDING = "repo_state_pending"

View file

@ -579,6 +579,28 @@ def test_clone_url_svn_ssh_generator():
assert clone_url == "svn+ssh://rcdev@vps1/svn-test"
def test_clone_url_svn_ssh_with_port_generator():
from rhodecode.lib.utils2 import get_clone_url
class RequestStub(object):
def request_url(self, name):
return "http://vps1:8000"
def route_url(self, name):
return self.request_url(name)
clone_url = get_clone_url(
request=RequestStub(),
uri_tmpl=Repository.DEFAULT_CLONE_URI_SSH,
repo_name="svn-test",
repo_id=23,
repo_type="svn",
ssh_port=":9022",
**{"sys_user": "rcdev"},
)
assert clone_url == "svn+ssh://rcdev@vps1:9022/svn-test"
idx = 0