背景时,Git Checkout不起作用



我正在尝试获得一个可以使用git存储库来完成某件事的ssh触发器。当我在后台运行代码时,它可以正常工作。添加nohup没有效果。相关点只是说:

git checkout master
Already on 'master'

但是当我最终背景下它时,它就停止使用:

git checkout master
fatal: unable to write new index file

(输出也针对日志文件;该文件也在前景上完成;日志文件包含正在执行的命令)。

我在脚本开头打印了idumask,它们看起来相同。在这两种情况下,它都是由SSH触发器执行的,唯一的区别是命令之后的&

脚本看起来像这样:

#!/bin/sh
export GIT_DIR=/somewhere
nohup git-using-script.sh </dev/null >/dev/null 2>&1 &
sleep 1

没有睡眠1,NOHUP不会启动(重定向发生在NOHUP启动之前,SSH设法在NOHUP创建新的会话之前退出,并且该命令终止了)。但是如果没有&,其他所有内容都可以运行脚本,但是Git会产生错误。

我能想到的唯一区别是,由于SSH已经下降了,因此Git试图出于某种原因或其他原因尝试访问它。因此,我使用script(1)来解决它。最终的调用有些疯狂,但有效:

nohup script -qec "/path/to/git/script.sh args" /dev/null 
    </dev/null >/dev/null 2>&1 &

我怀疑要获得控制终端的尝试(即使以前也没有连接到任何流)与输出分页有关,尽管我不明白为什么git checkout需要它。

也不是为什么要失败。

最新更新