如果我在git存储库中有一个文件,我如何确定该文件的给定版本是否可执行?
我知道git会跟踪文件是否可执行,git show
会显示执行权限的变化。例如,给定修订版的git show
输出可能包括:
diff --git file file
old mode 100644
new mode 100755
表示获取的文件是执行权限。
我想确定指定文件的当前修订版或任何指定修订版是否具有执行权限。
(背景:我有一个包装器脚本,使用
提取指定版本的文件git show $commit:./$filename > ./$filename.$commit
我想在新文件上运行chmod +x
当且仅当存储库中的文件可执行文件版本。)
答案 0 :(得分:3)
使用git ls-tree
,传入要检查的引用和文件路径。
例如,git ls-tree HEAD foo.txt
会提供类似
100644 blob 3e1d68d0714fd3d46ec22a685e317f0cf47f5e83 foo.txt
第一列中的644表示不可执行文件。 755表示可执行文件。