【问题标题】:Execute git-bash.exe from a service从服务执行 git-bash.exe
【发布时间】: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 执行此命令?还有其他合理的选择吗?

【问题讨论】:

    标签: powershell windows-services git-bash


    【解决方案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'
    

    【讨论】:

      猜你喜欢
      • 2019-12-07
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      • 2019-05-27
      • 2019-01-14
      • 1970-01-01
      • 2020-08-14
      • 1970-01-01
      相关资源
      最近更新 更多