在Windows服务器上自动Git-Pull的批处理文件的更好替代方案

时间:2013-06-20 19:09:11

标签: git iis-7 scheduled-tasks tortoisegit pageant

我有一组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。

1 个答案:

答案 0 :(得分:2)

我不认识你必须进行特殊环境设置以使Git命令工作的情况。你确定你的设置正确吗?

我通常建议开发人员

  1. 安装msysgit
  2. 安装TortoiseGit
  3. 在安装TortoiseGit时,他们应该选择 OpenSSH (而不是TortoiseGitPLink)。 enter image description here
  4. 运行ssh-keygen.exe -C "firstname.lastname@domain.com"以生成$HOME\.ssh文件夹
  5. 中的密钥
  6. .ssh\id_rsa.pub中的公钥复制到Git服务器。
  7. OpenSSH不需要pageant.exe

    完成此设置后,无需额外的环境设置。 (SSH_AGENT_PID和SSH_AUTH_SOCK变量由框架设置)。 git clone ssh://xxxx应立即开始工作。