Open a connection to a remote
The transport is selected based on the URL. The direction argument is due to a limitation of the git protocol (over TCP or SSH) which starts up a specific binary which can only do the one or the other.
whether you want to receive or send data
0 or an error code