-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

I don't recognize the situation that you would have to make special environment settings to make Git commands work. Are you sure you have it set up the right way?

I usually recommend that developers to

  1. Install msysgit
  2. Install TortoiseGit.
  3. While installing TortoiseGit, they should choose OpenSSH (not TortoiseGitPLink). enter image description here
  4. Run ssh-keygen.exe -C "firstname.lastname@domain.com" to generate keys in the $HOME\.ssh folder
  5. Copy the public key in .ssh\id_rsa.pub to the Git server.

OpenSSH does not require pageant.exe.

After this setup, no extra environment settings are needed. (SSH_AGENT_PID and SSH_AUTH_SOCK variables are set up by the frameworks). git clone ssh://xxxx should work right away.

于 2013-06-20T21:05:01.393 に答える