git log
或类似参数的哪些组合会找到更改文件权限的提交?
我可以使用git log -p <file>
和grep用于“新模式”,但这似乎并不令人满意。
答案 0 :(得分:3)
我的解决方案使用git log --summary
和grep
列出修改了给定文件权限的所有提交
git log --summary {file} |grep -e ^commit -e"=>"|grep '=>' -B1 | grep ^commit
如果省略{file}
,它将列出所有提交,其中任何文件的权限都被修改。
答案 1 :(得分:2)
我认为没有一个选项会直接导致“已更改文件的权限”类型的消息,但您可以使用git log --raw -- file.sh
并查看该文件的条目的前两列,这是旧模式和新模式。可以使用简单的awk
脚本来比较两个...
答案 2 :(得分:0)
Git不存储文件权限。它使用(umask-mediated)777检查文件的可执行文件和目录,并检查666的普通文件,如此处所示(当然ls输出被截断)
$ git checkout empty
$ umask 0
$ git clean -dfx
$ git checkout master
$ ls -l
-rw-rw-rw- 1 jthill jthill 4012 May 13 13:30 tag.c
drwxrwxrwx 2 jthill jthill 4096 May 13 13:30 builtin
-rwxrwxrwx 1 jthill jthill 22332 May 13 13:30 git-am.sh
lrwxrwxrwx 1 jthill jthill 32 May 13 13:30 RelNotes -> Documentation/RelNotes/1.8.2.txt