从服务执行 git-bash.exe
Posted
技术标签:
【中文标题】从服务执行 git-bash.exe【英文标题】:Execute git-bash.exe from a service 【发布时间】:2021-08-07 06:13:33 【问题描述】:我正在研究如何在 Powershell 环境中自动部署代码。
我可以在真实会话中轻松执行以下命令来更新存储库的代码:
C:\path\to\PortableGit\git-bash.exe -c 'git -C /c/path/to/repository.git pull'
但是我们不想登录会话来更新代码。
我们创建了一个服务来负责更新存储库。问题是该命令在真实会话中有效,但在服务中无效 - 它只是挂断。
我相信是因为 git-bash.exe 需要在命令实际执行时用 bash 打开一个新窗口一小段时间。
如何从 Service 执行此命令?还有其他合理的选择吗?
【问题讨论】:
【参考方案1】:尝试将路径用引号括起来,并在开头添加调用运算符 &
& "C:\path\to\PortableGit\git-bash.exe" -c 'git -C /c/path/to/repository.git pull'
【讨论】:
这是个好主意。不幸的是,我已经尝试过了,命令仍然挂断。我已经在 powershell 中尝试了一个真正的会话,并且这个窗口仍在打开。【参考方案2】:嗯,最后我看到除了使用 git.exe 而不是 bash-git 之外别无他法。
因此,将命令转换为 Windows 本机就可以了。如果你设置了私钥认证,你只需要设置 HOMEPATH 变量。
$env:HOMEPATH="\Users\Administrator";C:\path\to\PortableGit\bin\git.exe -C C:\path\to\repository.git pull'
【讨论】:
以上是关于从服务执行 git-bash.exe的主要内容,如果未能解决你的问题,请参考以下文章