Show More
@@ -188,6 +188,22 b' FILES' | |||
|
188 | 188 | (which could be a local path or a remote URI), the format is |
|
189 | 189 | <symbolic name> <repository path> with each mapping on a seperate line |
|
190 | 190 | |
|
191 | NON_TRANSPARENT PROXY SUPPORT | |
|
192 | ----- | |
|
193 | ||
|
194 | To access a mercurial repository through a proxy, | |
|
195 | create a file $HOME/.hgrc in the following format: | |
|
196 | ||
|
197 | [http_proxy] | |
|
198 | host=myproxy:8080 | |
|
199 | user=<username> | |
|
200 | passwd=<password> | |
|
201 | no=<localhost1>,<localhost2>,<localhost3>,... | |
|
202 | ||
|
203 | "user","passwd" fields are used for authenticating proxies, | |
|
204 | "no" is a comma-separated list of local host names | |
|
205 | for which proxy must be bypassed. | |
|
206 | ||
|
191 | 207 | BUGS |
|
192 | 208 | ---- |
|
193 | 209 | Probably lots, please post them to the mailing list (See Resources below) |
@@ -1228,6 +1228,36 b' class remoterepository:' | |||
|
1228 | 1228 | def __init__(self, ui, path): |
|
1229 | 1229 | self.url = path |
|
1230 | 1230 | self.ui = ui |
|
1231 | no_list = [ "localhost", "127.0.0.1" ] | |
|
1232 | host = ui.config("http_proxy", "host") | |
|
1233 | user = ui.config("http_proxy", "user") | |
|
1234 | passwd = ui.config("http_proxy", "passwd") | |
|
1235 | no = ui.config("http_proxy", "no") | |
|
1236 | if no: | |
|
1237 | no_list = no_list + no.split(",") | |
|
1238 | ||
|
1239 | no_proxy = 0 | |
|
1240 | for h in no_list: | |
|
1241 | if (path.startswith("http://" + h + "/") or | |
|
1242 | path.startswith("http://" + h + ":") or | |
|
1243 | path == "http://" + h): | |
|
1244 | no_proxy = 1 | |
|
1245 | ||
|
1246 | # Note: urllib2 takes proxy values from the environment and those will | |
|
1247 | # take precedence | |
|
1248 | ||
|
1249 | proxy_handler = urllib2.BaseHandler() | |
|
1250 | if host and not no_proxy: | |
|
1251 | proxy_handler = urllib2.ProxyHandler({"http" : "http://" + host}) | |
|
1252 | ||
|
1253 | authinfo = None | |
|
1254 | if user and passwd: | |
|
1255 | passmgr = urllib2.HTTPPasswordMgrWithDefaultRealm() | |
|
1256 | passmgr.add_password(None, host, user, passwd) | |
|
1257 | authinfo = urllib2.ProxyBasicAuthHandler(passmgr) | |
|
1258 | ||
|
1259 | opener = urllib2.build_opener(proxy_handler, authinfo) | |
|
1260 | urllib2.install_opener(opener) | |
|
1231 | 1261 | |
|
1232 | 1262 | def do_cmd(self, cmd, **args): |
|
1233 | 1263 | self.ui.debug("sending %s command\n" % cmd) |
@@ -1235,7 +1265,7 b' class remoterepository:' | |||
|
1235 | 1265 | q.update(args) |
|
1236 | 1266 | qs = urllib.urlencode(q) |
|
1237 | 1267 | cu = "%s?%s" % (self.url, qs) |
|
1238 | return urllib.urlopen(cu) | |
|
1268 | return urllib2.urlopen(cu) | |
|
1239 | 1269 | |
|
1240 | 1270 | def heads(self): |
|
1241 | 1271 | d = self.do_cmd("heads").read() |
General Comments 0
You need to be logged in to leave comments.
Login now