查看特定文件的可执行文件 bit/permission 掩码元数据
view executable bit/permission mask metadata for a specific file
git
应该在其元数据中为存储库中的每个文件保存一个 "executable" 标志,该标志独立于当前 FS 权限。
Git file permissions on Windows 显示如何设置 这个标志。
git ls-tree
显示已编译的权限掩码,但仅针对整个存储库。
如何只查看特定文件(或一堆文件)的标志?
一个 link 来参考描述这段元数据的文档将是理想的。我在 https://git-scm.com/docs/ 找不到任何东西,但到处都是模糊的短语。
使用git ls-tree
,只要给它更多的参数:
$ git ls-tree HEAD xdiff*
100644 blob 54236f24b9786710f91650ac63f6004cdeb012e6 xdiff-interface.c
100644 blob fbb5a1c3949b6ef6ba0dfb758723a48f3b402190 xdiff-interface.h
040000 tree 4c60b91db5de467cf05e864429dce1b44cb843e7 xdiff
第一个输出词是模式,对于 blob,它总是 100644
或 100755
。如果是 100755
则设置了可执行位,否则不是。 (有趣的是:git 在内部存储整个模式值,作为一个没有前导零的八进制字符串。上面引用的最后一行中的前导零是由 git ls-tree
生成的。)
如果需要,保留文件名或目录名;如果它是一个目录(模式 040000
或类型 tree
——在这种情况下,type
字符串实际上是由 mode
内部确定的)并且您想检查其内容, 添加尾部斜杠:
$ git ls-tree HEAD xdiff/
100644 blob 4fb7e79410c22fba1fb390af2e09008e932f5ea8 xdiff/xdiff.h
100644 blob 2358a2d6326e54308413cb8a5e6b61eba06324e9 xdiff/xdiffi.c
100644 blob 8b81206c9af0767bd91c4b9e453f7c5c2bde47b1 xdiff/xdiffi.h
100644 blob 993724b11c40bacffee8df927018e5790a265bd4 xdiff/xemit.c
100644 blob d29710770ce40bafa6e9eb2b2ea7c9c8ba43c727 xdiff/xemit.h
100644 blob 73210cb6f3fb5d1cb90b1c5959a5a90e058ea1f2 xdiff/xhistogram.c
100644 blob 526ccb344d231fb978f53b80deb17ec6c8fed368 xdiff/xinclude.h
100644 blob 165a895a93e04b33ca7c8f3839ee85e0eccb4a07 xdiff/xmacros.h
100644 blob f338ad6c757cda29a052960a504715c062ab5dda xdiff/xmerge.c
100644 blob 04e1a1ab2a863814df3b9a91d4e854704d47f3f5 xdiff/xpatience.c
100644 blob 13b55aba7441bc84d2c5c075110e9ef798ba18f8 xdiff/xprepare.c
100644 blob 8fb06a537451cbf3335ab4bdacb0f992e9744338 xdiff/xprepare.h
100644 blob 2511aef8d89ab52be5ec6a5e46236b4b6bcd07ea xdiff/xtypes.h
100644 blob 62cb23dfd37743e4985655998ccabd56db160233 xdiff/xutils.c
100644 blob 4646ce575251b07053f20285be99422d6576603e xdiff/xutils.h
(请注意,在 SHA-1 和路径之间有一个硬制表符 \t
,由于 Whosebug 显示此 OK,我将其留在此处的原文中。)
git
应该在其元数据中为存储库中的每个文件保存一个 "executable" 标志,该标志独立于当前 FS 权限。
Git file permissions on Windows 显示如何设置 这个标志。
git ls-tree
显示已编译的权限掩码,但仅针对整个存储库。
如何只查看特定文件(或一堆文件)的标志?
一个 link 来参考描述这段元数据的文档将是理想的。我在 https://git-scm.com/docs/ 找不到任何东西,但到处都是模糊的短语。
使用git ls-tree
,只要给它更多的参数:
$ git ls-tree HEAD xdiff*
100644 blob 54236f24b9786710f91650ac63f6004cdeb012e6 xdiff-interface.c
100644 blob fbb5a1c3949b6ef6ba0dfb758723a48f3b402190 xdiff-interface.h
040000 tree 4c60b91db5de467cf05e864429dce1b44cb843e7 xdiff
第一个输出词是模式,对于 blob,它总是 100644
或 100755
。如果是 100755
则设置了可执行位,否则不是。 (有趣的是:git 在内部存储整个模式值,作为一个没有前导零的八进制字符串。上面引用的最后一行中的前导零是由 git ls-tree
生成的。)
如果需要,保留文件名或目录名;如果它是一个目录(模式 040000
或类型 tree
——在这种情况下,type
字符串实际上是由 mode
内部确定的)并且您想检查其内容, 添加尾部斜杠:
$ git ls-tree HEAD xdiff/
100644 blob 4fb7e79410c22fba1fb390af2e09008e932f5ea8 xdiff/xdiff.h
100644 blob 2358a2d6326e54308413cb8a5e6b61eba06324e9 xdiff/xdiffi.c
100644 blob 8b81206c9af0767bd91c4b9e453f7c5c2bde47b1 xdiff/xdiffi.h
100644 blob 993724b11c40bacffee8df927018e5790a265bd4 xdiff/xemit.c
100644 blob d29710770ce40bafa6e9eb2b2ea7c9c8ba43c727 xdiff/xemit.h
100644 blob 73210cb6f3fb5d1cb90b1c5959a5a90e058ea1f2 xdiff/xhistogram.c
100644 blob 526ccb344d231fb978f53b80deb17ec6c8fed368 xdiff/xinclude.h
100644 blob 165a895a93e04b33ca7c8f3839ee85e0eccb4a07 xdiff/xmacros.h
100644 blob f338ad6c757cda29a052960a504715c062ab5dda xdiff/xmerge.c
100644 blob 04e1a1ab2a863814df3b9a91d4e854704d47f3f5 xdiff/xpatience.c
100644 blob 13b55aba7441bc84d2c5c075110e9ef798ba18f8 xdiff/xprepare.c
100644 blob 8fb06a537451cbf3335ab4bdacb0f992e9744338 xdiff/xprepare.h
100644 blob 2511aef8d89ab52be5ec6a5e46236b4b6bcd07ea xdiff/xtypes.h
100644 blob 62cb23dfd37743e4985655998ccabd56db160233 xdiff/xutils.c
100644 blob 4646ce575251b07053f20285be99422d6576603e xdiff/xutils.h
(请注意,在 SHA-1 和路径之间有一个硬制表符 \t
,由于 Whosebug 显示此 OK,我将其留在此处的原文中。)