【问题标题】:Show the permission of a indexed file in git在 git 中显示索引文件的权限
【发布时间】:2011-04-18 18:54:09
【问题描述】:

这与我最近询问的另一个问题有关 storing a non-bare repository in Dropbox 以便在计算机之间轻松移动,因此阅读该问题的背景可能会有所帮助。

要点是fileMode 不断报告一些文件的差异。我找不到始终如一地重现它的方法,但它经常发生。我注意到的是,在两台机器上都有 644 权限的文件通常会在其中一台机器上报告与 755 的差异。这让我觉得 Git 相信可执行位已设置,但我不知道我是否真的可以看到 Git 是如何设置该位的。

【问题讨论】:

  • 只是为了确保我正确阅读:磁盘上的文件总是644,但提交中的文件有时是755git ls-treegit ls-files -s 说什么?这会告诉你 git 记录的数字。
  • 他们说该位未设置。文件本身说 644,但表明从未进行过更改。不过你确实回答了这个问题。看起来git ls-files 是显示可执行位状态的答案。如果您将评论更改为答案,我会将其标记为这样。

标签: git permissions diff dropbox


【解决方案1】:

如下使用gitk

$ gitk path/to/repository/file

在打开的窗口中,在虚线下您可以看到六位数字。 最后三个是文件权限。

...
------------------------------- path/to/repository/file -------------------------
index a5e14048..08ce8948 100644
...

在上面的例子中,6位数字是100644,文件权限是644

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • “如果你想尝试调试这个奇怪的问题”——没有什么可调试的:这是设计使然。 Git 的维护者says:“……git 用于记录 blob 的完整(模式和 0777)……它有一个非常令人不快的副作用,即生成的树取决于用户的 umasks……一个人用模式 664 记录一个 blob,下一个人修改文件的人将使用模式 644 进行记录,这使得跟踪有意义的更改变得非常困难……这个问题很久以前就已通过提交 e447947 [on] 2005-04-16 修复。”
    猜你喜欢
    • 1970-01-01
    • 2014-04-18
    • 2016-03-20
    • 2012-05-16
    • 2018-03-07
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    相关资源
    最近更新 更多