git checkout在后台运行时不起作用

时间:2014-01-29 16:12:55

标签: git ssh nohup

我正在尝试使用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会产生错误。

1 个答案:

答案 0 :(得分:0)

我能想到的唯一区别是,随着ssh已经失效,没有tty,而git正试图以某种原因访问它。所以我使用script(1)来解决这个问题。结果调用有些疯狂,但它有效:

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

我怀疑尝试获取控制终端(它之前没有连接到任何流)与输出分页有关,但我不明白为什么git checkout需要它。也不是为什么它不应该失败。

相关问题