Вот способ получить тот же эффект, но с шагами, отличными от того, что вы намекнули в своем вопросе:
- Старт
ssh-agent
- Добавьте ключ с помощью
ssh-add
(он запросит пароль, только один раз) - Запустите столько
git clone <url>
, сколько вам нужно - Очистите
На втором этапе будет запрошенпароль, вместо использования set /p
.Следующий пакетный файл является своего рода портом основных правил ssh для github .Я протестировал его с помощью ssh-подключения к gitorious, работающему git версии 1.7.6.msysgit.0 под cmd.exe в Windows Vista.
@rem Do not use "echo off" to not affect any child calls.
@setlocal
@:: Find out where is git installed
@where git > __wheregit.txt
@:: Under XP, there is no where command. Use this (thanks to Raymond Chen)
@:: http://blogs.msdn.com/b/oldnewthing/archive/2005/01/20/357225.aspx
@:: (for %%e in (%PATHEXT%) do @for %%i in (git%%e) do @if NOT "%%~$PATH:i"=="" echo %%~$PATH:i) > __wheregit.txt
@:: Move it to a environment variable, we will need to manipulate the string
@set /p wheregit= <__wheregit.txt
@del __wheregit.txt
@:: Parse the full file name of git.cmd to find the the path
@for /F "delims=" %%I in ("%wheregit:~0,-7%..") do @set git_install_root=%%~fI
@set PATH=%git_install_root%\bin;%git_install_root%\mingw\bin;%PATH%
@:: The keys are in the home directory.
@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
@if not exist "%HOME%" @set HOME=%USERPROFILE%
@ ::start ssh-agent, and save its output
@ssh-agent > __ssh-agent.out
@ ::parse the output and set environment vars needed by ssh-add
@FOR /F "eol=; tokens=1* delims=;" %%i in ('findstr /v echo __ssh-agent.out') do @set %%i
@del __ssh-agent.out
@ ::add the key to the agent (this will ask for the password)
@ssh-add %HOME%\.ssh\id_rsa
@ ::Call git. When it's time to use the key, its password will be provided by ssh-agent
@ ::Obviously you will put your git clone url here
@call git clone git@gitorious.org:siaki-sso/siaki-sp.git
@call git clone git@gitorious.org:siaki-sso/siaki-idp.git
@ ::Kill ssh-agent
@ssh-agent -k
@endlocal