What is git's “filemode”?

前端 未结 2 1098
[愿得一人]
[愿得一人] 2020-12-05 17:01

For something that exists in EVERY single git repo... on earth... there sure isn\'t very much info out there regarding filemode. The first 100 res

相关标签:
2条回答
  • 2020-12-05 17:47

    A git bare repo (detailed here) has no relation with filemode.
    It is used for pushing to it, because since it has no working tree, there is no concern about maintaining said working tree in sync with what you just pushed.

    what is a "fake" file? and what constitutes a "working" directory?

    There is no "fake" file. It is just that a bare repo only contains git's administrative and control files, not actual data file you could work with and modify.
    Those are checked out in a "working directory", when the repo is not bare.

    The git config man page

    core.fileMode
    

    If false, the executable bit differences between the index and the working tree are ignored; useful on broken filesystems like FAT (File Allocation Table).
    See git-update-index.

    The command honors core.filemode configuration variable.
    If your repository is on a filesystem whose executable bits are unreliable, this should be set to false.
    This causes the command to ignore differences in file modes recorded in the index and the file mode on the filesystem if they differ only on executable bit.
    On such an unfortunate filesystem, you may need to use git update-index --chmod=.

    For me, it's in every repo's ./git/config file, near the top,

    Me too, but on Windows, it is always:

    git config --local core.filemode
    false
    

    Don't forget that git only records two filemodes:

    • 644
    • 755
    0 讨论(0)
  • 2020-12-05 17:50

    filemode set true means file mode permission changes are considered changes.

    bare set true means the directory is not a working directory (no real files).

    0 讨论(0)
提交回复
热议问题