-2

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

这在大多数情况下都有效;但是,一个主要问题是选美在后台运行,并且在第一次执行此批处理文件时,第一行无限期挂起。为了解决这个问题,我手动运行任务,杀死它,然后让它自动运行。但是,如果选美比赛崩溃或服务器重新启动,我的文件将不再在该服务器上同步,因为第一线问题(这在循环方案中可能是一个大问题)。

关于如何改进这个方案有什么建议吗?我无法切换到基于 https 的 git。

4

1 回答 1

2

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

我通常建议开发人员

  1. 安装msysgit
  2. 安装TortoiseGit
  3. 在安装 TortoiseGit 时,他们应该选择OpenSSH(而不是 TortoiseGitPLink)。 在此处输入图像描述
  4. 运行在文件夹ssh-keygen.exe -C "firstname.lastname@domain.com"中生成密钥$HOME\.ssh
  5. 将公钥复制.ssh\id_rsa.pub到 Git 服务器。

OpenSSH 不需要pageant.exe.

在此设置之后,不需要额外的环境设置。(SSH_AGENT_PID 和 SSH_AUTH_SOCK 变量由框架设置)。git clone ssh://xxxx应该立即工作。

于 2013-06-20T21:05:01.393 回答