##// END OF EJS Templates
errors: catch urllib errors specifically instead of using safehasattr()...
errors: catch urllib errors specifically instead of using safehasattr() Before this patch, we would catch `IOError` and `OSError` and check if the instance had a `.code` member (indicates `HTTPError`) or a `.reason` member (indicates the more generic `URLError`). It seems to me that can simply catch those exception specifically instead, so that's what this code does. The existing code is from fbe8834923c5 (commands: report http exceptions nicely, 2005-06-17), so I suspect it's just that there was no `urllib2` (where `URLError` lives) back then. The old code mentioned `SSLError` in a comment. The new code does *not* try to catch that. The documentation for `ssl.SSLError` says that it has a `.reason` property, but `python -c 'import ssl; print(dir(ssl.SSLError("foo", Exception("bar"))))` doesn't mention that property on either Python 2 or Python 3 on my system. It also seems that `sslutil` is pretty careful about converting `ssl.SSLError` to `error.Abort`. It also is carefult to not assume that instances of the exception have a `.reason`. So I at least don't want to catch `ssl.SSLError` and handle it the same way as `URLError` because that would likely result in a crash. I also wonder if we don't need to handle it at all (because `sslutil` might handle all the cases). It's now early in the release cycle, so perhaps we can just see how it goes? Differential Revision: https://phab.mercurial-scm.org/D9318

File last commit:

r46125:eb443f7c default
r46442:ae00e170 default
Show More
README
40 lines | 1.2 KiB | text/plain | TextLexer
Yuya Nishihara
chg: import frontend sources...
r28060 cHg
===
A fast client for Mercurial command server running on Unix.
Install:
$ make
$ make install
Usage:
$ chg help # show help of Mercurial
$ alias hg=chg # replace hg command
$ chg --kill-chg-daemon # terminate background server
Environment variables:
Although cHg tries to update environment variables, some of them cannot be
changed after spawning the server. The following variables are specially
handled:
Jun Wu
chg: remove manual reload logic...
r28454 * configuration files are reloaded automatically by default.
Yuya Nishihara
chg: import frontend sources...
r28060 * CHGHG or HG specifies the path to the hg executable spawned as the
background command server.
The following variables are available for testing:
* CHGDEBUG enables debug messages.
* CHGSOCKNAME specifies the socket path of the background cmdserver.
Jun Wu
chg: make timeout adjustable...
r29345 * CHGTIMEOUT specifies how many seconds chg will wait before giving up
Jun Wu
chg: change default connect timeout to 60 seconds...
r29357 connecting to a cmdserver. If it is 0, chg will wait forever. Default: 60
Valentin Gatien-Baron
chg: make is possible to call by default an hg binary located next to chg...
r46128
Build environment variables:
* HGPATH: the path to the hg executable to call when CHGHG and HG are not set,
instead of "hg"
* HGPATHREL=1: when CHGHG and HG are not set, the hg executable will be ./hg
relative to the chg executable. Only works on linux, falls back to "hg"
otherwise.