gpt4 book ai didi

git - git 的 "filemode"是什么?

转载 作者:IT王子 更新时间:2023-10-29 00:59:44 28 4
gpt4 key购买 nike

什么是 git filemode?对我来说,它在每个 repo 的 ./git/config 文件中,靠近顶部:

 [core]
filemode = true

这是什么?这是什么意思?与什么有关系

    bare = false

我也不太明白?

最佳答案

git bare repo ( detailed here ) 与文件模式无关。

裸仓库被用作目标,推送到。
您可以推送到裸存储库,因为它没有工作树:无需担心将所述工作树与您刚刚推送的内容保持同步。

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

没有“假”文件。只是一个裸仓库只包含 git 的管理和控制文件,而不是您可以使用和修改的实际数据文件。
当 repo 不是裸机时,这些在“工作目录”中 check out 。

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,

我也是,但在 Windows 上,它总是:

git config --local core.filemode
false

不要忘记 git 只记录两种文件模式:

  • 644
  • 755

使用 Git 2.37.3(2022 年第 3 季度),“git fsck( man ) 可以更好地检测无效文件模式。

在 2.37.3 之前,它是从树对象读取模式,但在将模式传递给逻辑以检查对象健全性之前对该模式进行规范化,这从检查逻辑中 stash 了损坏的树对象。
这已得到纠正,但为了帮助退出无法追溯修复的损坏的树对象的项目,此代码检测到的异常的严重性目前已降级为“信息”。

参见 commit 4dd3b04 , commit 53602a9 , commit ec18b10 (2022 年 8 月 10 日)Jeff King (peff) .
(由 Junio C Hamano -- gitster -- merge 于 commit 363a193 ,2022 年 8 月 18 日)

fsck: actually detect bad file modes in trees

Reported-by: Xavier Morel
Signed-off-by: Jeff King

We use the normal tree_desc code to iterate over trees in fsck, meaning we only see the canonicalized modes it returns.
And hence we'd never see anything unexpected, since it will coerce literally any garbage into one of our normal and accepted modes.

We can use the new RAW_MODES flag to see the real modes, and then use the existing code to actually analyze them.
The existing code is written as allow-known-good, so there's not much point in testing a variety of breakages.
The one tested here should be S_IFREG but with nonsense permissions.

Do note that the error-reporting here isn't great.
We don't mention the specific bad mode, but just that the tree has one or more broken modes.
But when you go to look at it with "git ls-tree"(man), we'll report the canonicalized mode!
This isn't ideal, but given that this should come up rarely, and that any number of other tree corruptions might force you into looking at the binary bytes via "cat-file", it's not the end of the world.

警告是:

warning in tree $tree: badFilemode: contains bad file modes 

关于git - git 的 "filemode"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19620335/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com