上下文:我正在构建一个自动构建脚本,它将在 Windows 服务器上运行(这是必要的,因为我们的开发软件包仅适用于 Windows)。我的客户端也是 Windows。它应该执行许多步骤,其中一个是登录 github,丢弃所有本地更改(以防万一;确实不应该有任何本地更改),获取和合并。
限制: 1)我应该能够运行一个批处理文件(或其他脚本文件,只要它在 Windows 盒子上运行) 2)我不能走到盒子旁边,每次都输入我的 SSH 密码。它应该自动工作。
问题:我无法让 Git 和 SSH 与我的 Windows 批处理文件完美配合。
我的第一次尝试:
:: set repo folder
CD %2
:: check status
CALL git status
ECHO.
:: discard all changes
ECHO ~ discard all changes
ECHO.
CALL git reset --hard
CALL git clean -f -d
ECHO.
:: switch branch
ECHO ~ checkout branch %4
ECHO.
CALL git checkout %4
ECHO.
:: get any changes from server
ECHO ~ fetch %3
ECHO.
CALL git fetch %3
ECHO.
:: merge changes into current branch
ECHO ~ merge %3/%4
ECHO.
CALL git merge %3/%4
ECHO.
参数 %2 是 windows 文件位置,%3 是 github HTTPS url,%4 是分支名称。
这可行,但使用 HTTPS,这意味着手动输入我的用户名和密码。
所以我尝试在 SSH(通过 bash)中使用以下命令:
eval `ssh-agent`
ssh-add /z/id_rsa
像这样从批次:
CD C:\Program Files (x86)\Git\bin\
sh.exe --login -i -c "eval `ssh-agent` && ssh-add /z/id_rsa && exit"
但是,SSH 还要求我在每次使用此命令时输入密钥密码。
我如何才能 A) 在批处理/bash 脚本之间保持 SSH 登录信息有效,或者 B) 以编程方式输入密码?