I have a setup with some Mercurial repositories. For security and standardization issues recently the https access to the Mercurial repositories were disabled, which forced all developers to use ssh.
In Linux everything worked very well, but in Windows programmers started complaining slowly. Using a colleague's machine for troubleshooting (Windows 7 + Mercurial 3.8.4) I realized that in fact even cloning relatively small repositories takes a long time:
$ time hg clone ssh://[email protected]/meuprojeto
destination directory: meuprojeto
requesting all changes
adding changesets
adding manifests
adding file changes
added 52 changesets with 216 changes to 55 files
updating to branch default
33 files updated, 0 files merged, 0 files removed, 0 files unresolved
real 2m58.229s
user 0m0.000s
sys 0m0.015s
Following some tips ( like esssa ), I tried to enable compression on TortoisePlink
. I also tried using a beta version of Plink
(theoretically faster) with little or no difference.
I then installed Cygwin
with OpenSSH
and the difference was brutal:
$ time hg clone ssh://[email protected]/meuprojeto
destination directory: meuprojeto
requesting all changes
adding changesets
adding manifests
adding file changes
added 52 changesets with 216 changes to 55 files
updating to branch default
33 files updated, 0 files merged, 0 files removed, 0 files unresolved
real 0m15.794s
user 0m0.000s
sys 0m0.015s
The clone was ~ 11 times faster! Still 3 times slower than Linux, but 15 seconds is an acceptable time.
I wonder if anyone has any idea what makes OpenSSH
so much faster than Plink
when we use Mercurial on Windows? Is there anything that can be done to improve the performance of Plink
?
I believe OpenSSH
is an acceptable solution since the target audience are developers. That said the Windows staff is not very accustomed to the Linux world and the integration of TortoiseHG + Plink + Pageant
turns out to be much less alien than Cygwin + OpenSSH + ssh-agent
. Is there any other good good performance and usability option for Windows?