首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PSR-4规范与git行为

PSR-4规范与git行为
EN

Stack Overflow用户
提问于 2021-10-03 21:04:47
回答 1查看 83关注 0票数 0

我正试着思考过去两天发生在我身上的几件事的原因。

我有这样的文件夹结构:

includes/bootstrap/Loader.php

这个Loader.php文件的命名空间应该如下所示:

App\Bootstrap

composer是为PSR4设置的,源目录为App,命名空间为App

在我的Mac电脑上,我的代码在本地运行得很好,但是当上传到一个web服务器(Linux)时,所有的东西都坏了,它不停地吐出来,没有找到类。我的搜索告诉我,Linux是区分大小写的,所以我返回并将bootstrap文件夹更改为Bootstrap,这样新的结构就是includes/Bootstrap/Loader.php --在之后的生产中,一切都工作得很好。

  1. 这是它在我的本地mac上工作而不是在web服务器上工作的根本原因,对吗?Linux是区分大小写的事实?

现在一切都很好,我希望我的命名空间是这样的:

App\Bootstrap

不希望我的名字空间是这样的:

App\bootstrap

在将代码推到github之后,我意识到它降低了所有文件夹的名称!进一步的搜索将我引向这样一个事实:我必须运行it config core.ignorecase false,这样它才能尊重文件夹名的情况!

然后,我尝试在一个完全不同的目录和终端中删除回购程序,并向我展示了以下信息:

  1. “碰撞”是什么意思?文件夹中没有文件。另外,git上的版本是大写文件夹名版本,为什么git要下载不同的内容呢?

我可以看到,它同时显示在终端中,但在文件夹中,它是github...so上的实际版本,我只是想知道为什么它在终端中同时显示了这两个版本。

  1. git会在Mac上为其他人降低回购额吗?我怎样才能阻止这类事情向前发展呢?是因为以前回购中的一些文件夹名被降低了吗?我看到默认情况下,git配置忽略大小写设置为false...why,为了尊重文件夹名称大小写,我必须再次运行它吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-04 00:09:21

通常,Linux文件系统是区分大小写的,所以如果您将文件称为App\Bootstrap,那么在文件系统中就需要这样做。所以是的,你的第一个问题。

Git的意思是“冲突”,您的存储库中有两组路径:一组从include/Bootstrap开始,一组从include/bootstrap开始。Git区分大小写,因此它对这些路径的处理方式不同。但是,Mac无法区分情况,所以当Git将两组路径写入文件系统时,只能成功地编写其中的一个路径。

至于设置core.ignoreCase,它被设置为反映您的文件系统实际能够并且不应该被更改的内容。问题不是Git:问题是您的文件系统根本无法处理这种情况。Git FAQ对此做了一些详细的解释。

若要删除副本,请运行git rm -r --cached includes/bootstrap,然后提交。

您可能还希望将来使用区分大小写的文件系统,这是在APFS分区中格式化时的一个选项,尽管它不是macOS上的默认设置。请注意,有些程序不能很好地处理这个问题,并且在区分大小写的文件系统上运行时可能会导致问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69428875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档