我有一组Web服务器,为了使文件在服务器上保持最新,我使用了Windows计划任务。该任务调用批处理文件,该文件执行git-pull命令。
这看起来很简单,但我使用SSH密钥对git服务器进行身份验证。到目前为止,我能够找到将这些密钥传递给git的唯一方法是使用pageant.exe
。因此,我的批处理文件包含以下命令:
"C:\Program Files\TortoiseGit\bin\pageant.exe" "C:\privateKey.ppk"
set local
set HOME=c:\
set GIT_SSH=C:\Program Files\TortoiseGit\bin\TortoisePLink.exe
cd c:\webserverfiles
git pull -v --progress origin master
这在很大程度上起作用;但是,一个主要问题是pageant在后台运行,并且在第一次执行此批处理文件时,第一行无限期挂起。为了解决这个问题,我手动运行任务,杀死它,然后让它自动运行。但是,如果网页崩溃或服务器重新启动,我的文件不再在该服务器上同步,因为一线问题(这可能是循环方案中的一个大问题)。
对于如何改进此计划有任何建议吗?我无法切换到基于https的git。
答案 0 :(得分:2)
我不认识你必须进行特殊环境设置以使Git命令工作的情况。你确定你的设置正确吗?
我通常建议开发人员
ssh-keygen.exe -C "firstname.lastname@domain.com"
以生成$HOME\.ssh
文件夹.ssh\id_rsa.pub
中的公钥复制到Git服务器。 OpenSSH不需要pageant.exe
。
完成此设置后,无需额外的环境设置。 (SSH_AGENT_PID和SSH_AUTH_SOCK变量由框架设置)。 git clone ssh://xxxx
应立即开始工作。