什么git log
或类似的参数组合会找到更改文件权限的提交?
我可以使用git log -p <file>
和 grep 来表示“新模式”,但这似乎不太令人满意。
我的解决方案使用git log --summary
和grep
列出所有修改给定文件权限的提交
git log --summary {file} |grep -e ^commit -e"=>"|grep '=>' -B1 | grep ^commit
如果{file}
省略,它将列出所有提交,其中任何文件的权限被修改。
我认为没有一个选项会直接导致“文件权限已更改”之类的消息,但您可以使用git log --raw -- file.sh
并查看该文件条目的前两列,即旧模式和新模式。可以使用一个简单的awk
脚本来比较两者...
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