git - 设置 GIT_DISCOVERY_ACROSS_FILESYSTEM 以允许服务访问存储在符号链接(symbolic link)下的 git repo

标签 git symlink upstart

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

Failed to run 'git fetch' for /var/company/service/src/program repo; Details: fatal: Not a git repository (or any parent up to mount point /data) Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).



如何为服务设置 GIT_DISCOVERY_ACROSS_FILESYSTEM?

最佳答案

GIT_DISCOVERY_ACROSS_FILESYSTEM是 git 在尝试查找 repo 的根目录时查找的环境变量。如果该路径存在于另一个文件系统上,该命令将产生上述错误消息以防止 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错误消息消失了。

关于git - 设置 GIT_DISCOVERY_ACROSS_FILESYSTEM 以允许服务访问存储在符号链接(symbolic link)下的 git repo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48292208/

相关文章:

git - git 可以告诉我仓库何时从原点 pull 出吗

git - 如何从git存储库中获取旧代码

python - os.path.samefile 是否遵循符号链接(symbolic link)?

node.js - 进程将二进制数据记录到日志文件

ruby-on-rails - Foreman 在 ubuntu 12.04 上将 upstart 脚本导出为 userjob

ubuntu - Upstart :在脚本中回显

git - 使用 Git Bash 连接到私有(private)主机 SSH 来部署、管理和开发网站

git - 如何将我的远程 git 存储库移动到另一个远程 git 存储库?

android-studio - 如何在 Android Studio 中修复 "couldn' t follow symbolic link”?

linux - 安装rpm并将文件放入符号链接(symbolic link)目录