我要在结帐后设置完全权限。post-checkout
脚本如下:
#!/bin/bash
echo "This is post-checkout hook"
checkoutType=$3
find -not -path "./git/*" -exec chmod -R a+rwx {} \;
但是此脚本chmod所有内容,将花费大量时间。
如何仅在checkout
之后更改已更改的文件夹和文件?
答案 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
。