我们有一个Upstart服务/作业,它使用git repo的本地克隆。使用符号链接重新定位数据文件夹后,我们现在得到以下错误消息:

无法为/ var / company / service / src / program repo运行'git fetch';
详细信息:致命:不是git存储库(或任何挂载点最多的父级)
/ data)在文件系统边界停止
(未设置GIT_DISCOVERY_ACROSS_FILESYSTEM)。

如何为服务设置GIT_DISCOVERY_ACROSS_FILESYSTEM?

最佳答案

GIT_DISCOVERY_ACROSS_FILESYSTEM是git在尝试查找存储库根目录时查找的环境变量。如果该路径在另一个文件系统上存在,该命令将产生以上错误消息,以防止git越过文件系统边界。您可以将值设置为true以允许该操作,并且大多数init系统都可以使用add environmental variables for a job/service

对于Upstart,我们只需要更新/etc/init/servicename.conf文件以包含env和export关键字:

start on runlevel [2345]
stop on runlevel [^2345]
respawn
respawn limit 10 2
chdir /usr/local/servicename
setgid servicegroup
setuid servicename
limit nofile 1000000 1000000

env GIT_DISCOVERY_ACROSS_FILESYSTEM=true
export GIT_DISCOVERY_ACROSS_FILESYSTEM
exec /usr/local/servicename --cfg /etc/servicename.cfg >> /var/log/servicename.log 2>&1

重新加载配置并重新启动服务后,git错误消息消失了。

08-27 05:19