【问题标题】:Mount EFS inside a git repo, what could possibly go wrong?在 git repo 中挂载 EFS,可能会出现什么问题?
【发布时间】:2019-11-13 00:20:20
【问题描述】:

我有相当大的代码库,名为my-amazing-project,由 git 跟踪。其中一个子目录 my-amazing-project/efs-stuff/ 包含注定要存在于 AWS EFS 目录中的 Python 脚本。每次更改这些文件时,不必手动将这些文件从我的 git 存储库复制到 EFS,如果我只是将 EFS 挂载到 my-amazing-project/efs-stuff/ 会怎样?从 gits 的角度来看,它就像任何其他目录一样,里面不应该有 git 的东西,因为那都是在顶级目录中,而且像 Pycharm 这样的 IDE 也应该保持子目录相当干净。

我忽略了这个策略是否存在一些严重的问题,或者 EFS 挂载在 git-tracked 目录下是相当安全的事情?

【问题讨论】:

    标签: git amazon-efs


    【解决方案1】:

    一般来说,这不是一个好主意。 Git 不希望您的数据跨文件系统传播,您最终可能会得到意想不到的结果。

    如果您的 EFS 未挂载,Git 会将文件检出到非 EFS 目录中,然后当您挂载 EFS 卷时该目录将消失。此外,某些文件系统不喜欢在非空目录上挂载,因此在这种情况下,您的 EFS 卷可能无法挂载。

    此外,Git 将设备和 inode 存储到索引中。如果设备或 inode 编号发生更改(例如,由于重新挂载),Git 将刷新所有这些文件,认为它们可能已更改。这可能会很慢。

    在 EFS 卷中,您还需要设置环境变量 GIT_DISCOVERY_ACROSS_FILESYSTEM,因为默认情况下 Git 在查找 .git 目录时不会遍历挂载点。

    处理此问题的更好方法是将 EFS 目录挂载到不同的目录,然后从存储库本地推送到 EFS 挂载上的存储库(可能后者使用 receive.denyCurrentBranch 设置为 updateInstead )。这意味着您必须显式推送,但它会很快并且在本地机器上进行,而且您不必担心跨文件系统工作的问题。

    【讨论】:

      猜你喜欢
      • 2021-01-11
      • 1970-01-01
      • 2019-05-25
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多