运行`post-checkout`钩子时如何只影响更改的文件夹和文件?

时间:2019-01-14 07:47:44

标签: git

我要在结帐后设置完全权限。post-checkout脚本如下:

#!/bin/bash
echo "This is post-checkout hook"
checkoutType=$3
find -not -path "./git/*" -exec chmod -R a+rwx {} \;

但是此脚本chmod所有内容,将花费大量时间。
如何仅在checkout之后更改已更改的文件夹和文件?

1 个答案:

答案 0 :(得分:1)

高级find

find -not -path "./git/*" -not -perm 0777 -exec chmod -R a+rwx {} \;
                          ^^^^^^^^^^^^^^^

您可能已经想象到了,是的,它看起来很直观-它告诉find仅对没有0777(或rwxrwxrwx)权限的文件和目录起作用。 / p>

或者,为避免过多调用chmod,可以使用xargs

find -not -path "./git/*" -not -perm 0777 -print0 | xargs -0 chmod a+rwx

只需对xargs进行一些调整,您将只运行一次chmod,从而节省了大量时间并提高了整体性能。有关更多信息,请参见max xargs