##// END OF EJS Templates
svn: fix checkout SVN ssh url....
marcink -
r4133:23b8627d default
parent child Browse files
Show More
@@ -654,7 +654,7 b' def get_host_info(request):'
654 654 }
655 655
656 656
657 def get_clone_url(request, uri_tmpl, repo_name, repo_id, **override):
657 def get_clone_url(request, uri_tmpl, repo_name, repo_id, repo_type, **override):
658 658 qualified_home_url = request.route_url('home')
659 659 parsed_url = urlobject.URLObject(qualified_home_url)
660 660 decoded_path = safe_unicode(urllib.unquote(parsed_url.path.rstrip('/')))
@@ -668,7 +668,8 b' def get_clone_url(request, uri_tmpl, rep'
668 668 'hostname': parsed_url.hostname,
669 669 'prefix': decoded_path,
670 670 'repo': repo_name,
671 'repoid': str(repo_id)
671 'repoid': str(repo_id),
672 'repo_type': repo_type
672 673 }
673 674 args.update(override)
674 675 args['user'] = urllib.quote(safe_str(args['user']))
@@ -676,6 +677,10 b' def get_clone_url(request, uri_tmpl, rep'
676 677 for k, v in args.items():
677 678 uri_tmpl = uri_tmpl.replace('{%s}' % k, v)
678 679
680 # special case for SVN clone url
681 if repo_type == 'svn':
682 uri_tmpl = uri_tmpl.replace('ssh://', 'svn+ssh://')
683
679 684 # remove leading @ sign if it's present. Case of empty user
680 685 url_obj = urlobject.URLObject(uri_tmpl)
681 686 url = url_obj.with_netloc(url_obj.netloc.lstrip('@'))
@@ -2297,9 +2297,11 b' class Repository(Base, BaseModel):'
2297 2297 rc_config = request.call_context.rc_config
2298 2298 else:
2299 2299 rc_config = SettingsModel().get_all_settings(cache=True)
2300
2300 2301 if ssh:
2301 2302 uri_tmpl = rc_config.get(
2302 2303 'rhodecode_clone_uri_ssh_tmpl') or self.DEFAULT_CLONE_URI_SSH
2304
2303 2305 else:
2304 2306 uri_tmpl = rc_config.get(
2305 2307 'rhodecode_clone_uri_tmpl') or self.DEFAULT_CLONE_URI
@@ -2307,7 +2309,9 b' class Repository(Base, BaseModel):'
2307 2309 return get_clone_url(request=request,
2308 2310 uri_tmpl=uri_tmpl,
2309 2311 repo_name=self.repo_name,
2310 repo_id=self.repo_id, **override)
2312 repo_id=self.repo_id,
2313 repo_type=self.repo_type,
2314 **override)
2311 2315
2312 2316 def set_state(self, state):
2313 2317 self.repo_state = state
@@ -450,10 +450,27 b' def test_clone_url_generator(tmpl, repo_'
450 450 clone_url = get_clone_url(
451 451 request=RequestStub(),
452 452 uri_tmpl=tmpl,
453 repo_name=repo_name, repo_id=23, **overrides)
453 repo_name=repo_name, repo_id=23, repo_type='hg', **overrides)
454 454 assert clone_url == expected
455 455
456 456
457 def test_clone_url_svn_ssh_generator():
458 from rhodecode.lib.utils2 import get_clone_url
459
460 class RequestStub(object):
461 def request_url(self, name):
462 return 'http://vps1:8000'
463
464 def route_url(self, name):
465 return self.request_url(name)
466
467 clone_url = get_clone_url(
468 request=RequestStub(),
469 uri_tmpl=Repository.DEFAULT_CLONE_URI_SSH,
470 repo_name='svn-test', repo_id=23, repo_type='svn', **{'sys_user': 'rcdev'})
471 assert clone_url == 'svn+ssh://rcdev@vps1/svn-test'
472
473
457 474 idx = 0
458 475
459 476
General Comments 0
You need to be logged in to leave comments. Login now