在git中显示索引文件的权限

Rob*_*son 12 git permissions diff dropbox

这涉及到另外一个问题我最近问存储在Dropbox的非纯仓库的计算机之间轻松移动,因此它可能是有帮助的阅读背景问题.

要点是fileMode不断报告某些文件的差异.我无法找到一种方法来重现它,但它经常发生.我注意到的是,该文件在两台机器上具有644权限,通常会在其中一台机器上报告755的差异.这让我觉得Git认为可执行位已设置,但我无法弄清楚我是否真的可以看到 Git 是如何设置该位的.

Jos*_*Lee 20

要查看git在提交和索引中实际考虑的文件git ls-tree <tree>,请git ls-files -s <path>分别使用和.

顺便说一句,似乎git只查看可执行位,并假设644其他所有内容.如果你想尝试调试这个奇怪的问题,请查看cache.h中的create_ce_mode.

  • “如果你想尝试调试这个奇怪的问题”——没有什么可调试的:这是设计使然。Git 的维护者 [说](http://git.661346.n2.nabble.com/why-not-preserve-file-permissions-td1619926.html#a1620446):“……git 用来记录完整的 (mode &amp; 0777)对于 blob……它有一个非常令人不快的副作用,即生成的树取决于用户的 umasks……一个人用 664 模式记录一个 blob,下一个修改文件的人将用 644 模式记录,这使得跟踪变得非常困难有意义的变化......这个问题很久以前就被修复了,提交 e447947 [on] 2005-04-16。” (2认同)