keepalive: ensure `close_all()` actually closes all cached connections
While debugging why LFS blob downloads are getting corrupted with workers, I
noticed that prior to spinning up the workers, the ConnectionManager has 2
connections to the server and calling `KeepAliveHandler.close_all()` left one
behind. The reason is the value component of `self._cm.get_all().items()` is a
list, and `self._cm.remove()` modifies said list while the caller is iterating
over it. Now `get_all()` is a deep copy of both the dict and lists in all
cases.
Mercurial's documentation is kept in reStructuredText format, which is
a simple plain text format that's easy to read and edit:
http://docutils.sourceforge.net/rst.html
It's also convertible to a variety of other formats including standard
UNIX man page format and HTML. You'll need to install Docutils:
http://docutils.sourceforge.net/
Use the Makefile in this directory to generate the man and HTML pages.