Re: GIT and SSH
From: Carlos Martín Nieto <hidden>
Date: 2016-06-15 22:52:42
On Wed, Dec 28, 2011 at 11:55:24AM +0200, Dov Grobgeld wrote:
Git supports multiple transport protocols. Among them are git, ssh, and https. (You can also use direct file system access, but it is questionable whether to call that a protocol). Each of the protocols have their advantages and drawbacks. The git protocol is only used for reading, and not for writing, but is supposed to be very fast. The common firewall filtering of the git protocol port 9418 is another problem. ssh is the prefered protocol for writing to a remote protocol. But if ssh is filtered, then http/https may be used, which is very slow for large repositories, but it has the advantage that it is the least blocked protocol.
Slow for large repositories? Are you thinking of the dumb HTTP transport? That one shouldn't be used for doing any serious work. The Smart HTTP transport is just the git smart protocol (the same one git:// and ssh:// URLs speak) wrapped inside HTTP communication. The negotiation phase is a more expensive than with either git or ssh, as HTTP is stateless and you need to remind the remote what you want and what you've already agreed on, but the actual transfer of data is done the same way than with the others so overall it shouldn't be that noticeable. Now, to the OP's concerns: yes, the ssh transport does generate ssh transport, as that's the whole point. You authenticate against the remote machine's ssh daemon and run git-upload-pack or git-receive-pack as needed (for fetching or pushing). If corporate policy doesn't allow ssh you should either fix the policy or use the smart HTTP protocol, though this involves messing with passwords and their associated problems. I'm not saying ssh keys don't have their complications, but I much prefer them. We can't help you diagnose why your clone is stalling without more information. It could be that the connection between the computers is flaky, git trying to take too much memory on the remote or local machines or any number of things. See if setting GIT_TRACE=1 in the environment helps to see what's going on. cmn
Attachments
- signature.asc [application/pgp-signature] 490 bytes