找到更改文件权限的提交

时间:2013-05-13 19:22:55

标签: git

git log或类似参数的哪些组合会找到更改文件权限的提交?

我可以使用git log -p <file>和grep用于“新模式”,但这似乎并不令人满意。

3 个答案:

答案 0 :(得分:3)

我的解决方案使用git log --summarygrep

列出修改了给定文件权限的所有提交

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