如何确定git中的文件是否可执行?

时间:2018-04-26 00:10:50

标签: git

如果我在git存储库中有一个文件,我如何确定该文件的给定版本是否可执行?

我知道git会跟踪文件是否可执行,git show会显示执行权限的变化。例如,给定修订版的git show输出可能包括:

diff --git file file
old mode 100644
new mode 100755

表示获取的文件是执行权限。

我想确定指定文件的当前修订版或任何指定修订版是否具有执行权限。

(背景:我有一个包装器脚本,使用

提取指定版本的文件
git show $commit:./$filename > ./$filename.$commit

我想在新文件上运行chmod +x当且仅当存储库中的文件可执行文件版本。)

1 个答案:

答案 0 :(得分:3)

使用git ls-tree,传入要检查的引用和文件路径。

例如,git ls-tree HEAD foo.txt会提供类似

的内容
100644 blob 3e1d68d0714fd3d46ec22a685e317f0cf47f5e83    foo.txt

第一列中的644表示不可执行文件。 755表示可执行文件。