|
@@ -1030,13 +1030,18 @@ def default_urllib2_opener(config):
|
|
|
|
|
|
class HttpGitClient(GitClient):
|
|
|
|
|
|
- def __init__(self, base_url, dumb=None, opener=None, config=None, **kwargs):
|
|
|
+ def __init__(self, base_url, dumb=None, opener=None, config=None,
|
|
|
+ user='',passwd='', **kwargs):
|
|
|
self._base_url = base_url.rstrip("/") + "/"
|
|
|
self.dumb = dumb
|
|
|
if opener is None:
|
|
|
self.opener = default_urllib2_opener(config)
|
|
|
else:
|
|
|
self.opener = opener
|
|
|
+ if user:
|
|
|
+ pass_man=urllib2.HTTPPasswordMgrWithDefaultRealm()
|
|
|
+ pass_man.add_password(None,base_url,user,passwd)
|
|
|
+ self.opener.add_handler(urllib2.HTTPBasicAuthHandler(pass_man))
|
|
|
GitClient.__init__(self, **kwargs)
|
|
|
|
|
|
def get_url(self, path):
|
|
@@ -1218,6 +1223,7 @@ def get_transport_and_path_from_url(url, config=None, **kwargs):
|
|
|
:return: Tuple with client instance and relative path.
|
|
|
"""
|
|
|
parsed = urlparse.urlparse(url)
|
|
|
+ auth, host = urllib2.splituser(parsed.netloc)
|
|
|
if parsed.scheme == 'git':
|
|
|
return (TCPGitClient.from_parsedurl(parsed, **kwargs),
|
|
|
parsed.path)
|
|
@@ -1227,8 +1233,8 @@ def get_transport_and_path_from_url(url, config=None, **kwargs):
|
|
|
path = parsed.path[1:]
|
|
|
return SSHGitClient.from_parsedurl(parsed, **kwargs), path
|
|
|
elif parsed.scheme in ('http', 'https'):
|
|
|
- return HttpGitClient.from_parsedurl(parsed, config=config,
|
|
|
- **kwargs), parsed.path
|
|
|
+ return HttpGitClient.from_parsedurl(parsed._replace(netloc=host),
|
|
|
+ config=config, passwd=parsed.password, **kwargs), parsed.path
|
|
|
elif parsed.scheme == 'file':
|
|
|
return default_local_git_client_cls.from_parsedurl(
|
|
|
parsed, **kwargs), parsed.path
|