【问题标题】:Git - folder case sensitive issueGit - 文件夹大小写敏感问题
【发布时间】:2016-04-14 14:57:07
【问题描述】:

我正在尝试在version control 系统中引入一个已经现有的代码库,例如git

我面临一个特殊问题,其中代码库包含两个名称相同但大小写不同的文件夹,例如“Form”和“form”。

这是场景: 假设,我们有三个系统 Linux(区分大小写的文件系统)、MAC(不区分大小写)和 WINDOWS(不区分大小写)

现在,如果有人在 LINUX 上创建一个文件夹名称 FORM 有文件 a.phpb.phpc.php 和另一个文件夹名称 form 有文件 a.phpb.phpd.php 并推送远程回购

现在,当 MAC 或 WINDOWS 上的用户克隆 repo 时,git 在处理来自远程的 FORMform 时将如何表现,因为 MAC 和 WINDOWS 不区分大小写

【问题讨论】:

    标签: linux git macos


    【解决方案1】:

    我面临一个特殊问题,其中代码库包含两个名称相同但大小写不同的文件夹,例如“Form”和“form”。

    Git 是基于 unix 的代码。它区分大小写,因此它允许您在不同的情况下使用相同的名称,并且除 windows 之外的您将不会被容忍。

    除了重命名文件夹之外,您无能为力。


    这个问题甚至在 git 中引发了一个安全漏洞,它允许您存储文件夹,例如

    .GIT
    .GIt
    

    http://git-blame.blogspot.com.es/2014/12/git-1856-195-205-214-and-221-and.html

    您可以提交和结帐到.Git/<anything>(或.[gG][iI][tT] 的任何大小写排列,.git 全部小写除外)。

    但这会覆盖不区分大小写的文件系统(例如 Windows 和 Mac OS X)上对应的 .git/。 至于现在你什么都做不了,你需要有不同的文件夹。

    【讨论】:

      【解决方案2】:

      您应该重命名您的文件夹,以便两个同级文件夹永远不会相同(不区分大小写比较)。这将使您的代码库更便携,更不容易出错,因为开发人员不会将一个文件夹与另一个文件夹混淆。

      【讨论】:

        【解决方案3】:

        您必须真正修复文件名。可能有用

        git config core.ignorecase false
        

        以防万一您想混合环境。在How do I commit case-sensitive only filename changes in Git?中查看更多信息

        【讨论】:

          【解决方案4】:

          由于 MAC 和 WINDOWS 不区分大小写,git 在处理来自远程的 FORM 和表单时会如何表现

          更好,因为 Git 2.17(2018 年第二季度),因为 Git 将在所有情况下跟踪那些不同大小写的文件夹。

          之前,同一目录中的“git add”文件,但在不区分大小写的文件系统上拼写不同的目录路径,已损坏 名称哈希数据结构并导致了意想不到的结果。

          Ben Peart (benpeart)commit c95525e(2018 年 2 月 8 日)。
          (由 Junio C Hamano -- gitster -- 合并于 commit 2ac76d8,2018 年 2 月 27 日)

          name-hash:在adjust_dirname_case() 中正确折叠目录名称

          更正adjust_dirname_case() 中的指针算法,使其调用 find_dir_entry() 具有正确的字符串长度。

          之前传入“dir1/foo”会传递长度 6 而不是正确的 4。
          这导致find_dir_entry() 永远找不到条目,​​因此后续的memcpy 会将名称折叠到具有正确大小写的版本的版本中永远不会执行。

          【讨论】:

            猜你喜欢
            • 2020-01-05
            • 1970-01-01
            • 1970-01-01
            • 2021-01-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-27
            • 1970-01-01
            相关资源
            最近更新 更多