问题说明
最近在搭建webrtc相关的内容的时候,将资源拉到本地后发现,有未提交的修改。现象是执行同步命令的时候提示有未提交修改而报错。
$ gclient sync
Syncing projects: 96% (29/30) src/third_party/errorprone/lib
src/third_party/android_ndk (ERROR)
----------------------------------------
[0:00:04] Started.
----------------------------------------
Error: 16>
16> ____ src/third_party/android_ndk at 635bc380968a76f6948fee65f80a0b28db53ae81
16> You have unstaged changes.
16> Please commit, stash, or reset.
去到对应的目录中执行git status
之后,发现是这样一些文件有修改:
$ git status
HEAD detached at 635bc380
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: sysroot/usr/include/linux/netfilter/xt_connmark.h
modified: sysroot/usr/include/linux/netfilter/xt_dscp.h
modified: sysroot/usr/include/linux/netfilter/xt_mark.h
modified: sysroot/usr/include/linux/netfilter/xt_rateest.h
modified: sysroot/usr/include/linux/netfilter/xt_tcpmss.h
modified: sysroot/usr/include/linux/netfilter_ipv4/ipt_ecn.h
modified: sysroot/usr/include/linux/netfilter_ipv4/ipt_ttl.h
modified: sysroot/usr/include/linux/netfilter_ipv6/ip6t_hl.h
no changes added to commit (use "git add" and/or "git commit -a")
这些文件理论上刚刚从远端拉回来,不应该被修改过,就很奇怪。
问题原因
经过查询,大概问题的原因在于,MacOS使用的apfs文件系统是大小写不敏感的。而Linux的文件系统hfs是大小写敏感的。
在这个文件夹中不仅存在了大写名字的这些文件,也同时存在了对应的小写名字的对应的文件。所以apfs无法将这两个文件区分开来,导致了这种问题。
其实MacOS也可以使用大小写敏感的文件系统,但是就需要在创建磁盘镜像的时候特殊设置一下。如参考资料3中所述方法。