【发布时间】:2021-11-24 11:01:10
【问题描述】:
我正试图弄清楚为什么过去两天我发生了几件事。
我有一个这样的文件夹结构:
includes/bootstrap/Loader.php
我的 Loader.php 文件的命名空间是这样的:
App\Bootstrap
为 PSR4 设置了composer,源目录为包含,命名空间为App。
我的代码在我的 Mac 上本地运行得非常好,但是当上传到网络服务器 (linux) 时,一切都崩溃了,并且一直吐出找不到类。我的搜索使我发现 Linux 区分大小写,因此我返回并将 bootstrap 文件夹更改为 Bootstrap,因此新结构为 includes/Bootstrap/Loader.php 之后在生产中一切正常。
- 这是它在我的本地 Mac 上运行而不是在 Web 服务器上运行的根本原因,对吧? Linux 区分大小写的事实?
现在一切正常,我更喜欢我的命名空间是这样的:
App\Bootstrap
我不希望我的命名空间是这样的:
App\bootstrap.
将代码推送到 github 后,我发现它所有文件夹名称都小写了!进一步搜索使我发现我必须运行 it config core.ignorecase false 以便它可以尊重文件夹名称的大小写!
然后我尝试在一个完全不同的目录中拉下 repo,终端向我显示了这条消息:
- “碰撞”是什么意思?文件夹中没有文件。 git上的版本也是大写的文件夹名称版本,为什么git尝试下载不同的东西?
我可以看到它在终端中都显示,但在文件夹中它是 github 上的实际版本......所以我只是想知道为什么它在终端中显示两个版本。
- git 会尝试在 Mac 上为其他人小写 repo 吗?我怎么能阻止这类事情的发展呢?是不是 repo 中的某些文件夹名称以前是小写的?我读到默认情况下 git config ignore case 设置为 false...为什么我必须再次运行它才能让 git 尊重文件夹名称大小写?
【问题讨论】: