# HG changeset patch # User Junichi OKADOME # Date 1310547076 -32400 # Node ID edaadbd99074d24dca819828936edd3bd8274354 # Parent 6867b01d1379cb27faca4c4cb06ed2fba38963e8 to be recognized port number in path to repository diff -r 6867b01d1379 -r edaadbd99074 hggit/git_handler.py --- a/hggit/git_handler.py Thu Jun 23 11:29:30 2011 -0700 +++ b/hggit/git_handler.py Wed Jul 13 17:51:16 2011 +0900 @@ -1058,11 +1058,20 @@ else: hostpath_seper = '/' + port = None host, path = hostpath.split(hostpath_seper, 1) if hostpath_seper == '/': transportpath = '/' + path else: - transportpath = path - return transport(host, thin_packs=False), transportpath + # port number should be recognized + m = re.match('^(?P\d+)?(?P.*)$', path) + if m.group('port'): + client.port = m.group('port') + port = client.port + transportpath = m.group('path') + else: + transportpath = path + + return transport(host, thin_packs=False, port=port), transportpath # if its not git or git+ssh, try a local url.. return client.SubprocessGitClient(thin_packs=False), uri diff -r 6867b01d1379 -r edaadbd99074 tests/test-url-parsing.py --- a/tests/test-url-parsing.py Thu Jun 23 11:29:30 2011 -0700 +++ b/tests/test-url-parsing.py Wed Jul 13 17:51:16 2011 +0900 @@ -50,13 +50,31 @@ except AttributeError: self.assertEquals(client.host, 'github.com') + def test_ssh_github_style_slash_with_port(self): + url = "git+ssh://git@github.com:10022/webjam/webjam.git" + client, path = self.handler.get_transport_and_path(url) + self.assertEquals(path, '/webjam/webjam.git') + self.assertEquals(client.host, 'git@github.com') + self.assertEquals(client.port, '10022') + + def test_gitdaemon_style_with_port(self): + url = "git://github.com:19418/webjam/webjam.git" + client, path = self.handler.get_transport_and_path(url) + self.assertEquals(path, '/webjam/webjam.git') + try: + self.assertEquals(client._host, 'github.com') + except AttributeError: + self.assertEquals(client.host, 'github.com') + self.assertEquals(client._port, '19418') if __name__ == '__main__': tc = TestUrlParsing() for test in ['test_ssh_github_style_slash', 'test_ssh_github_style_colon', 'test_ssh_heroku_style', - 'test_gitdaemon_style']: + 'test_gitdaemon_style', + 'test_ssh_github_style_slash_with_port', + 'test_gitdaemon_style_with_port']: tc.setUp() getattr(tc, test)() tc.tearDown()