Как повлиять только на измененные папки и файлы при запуске ловушки `post-checkout`? - PullRequest
0 голосов
/ 14 января 2019

Я хочу установить полное разрешение после оформления заказа. post-checkout скрипт, как показано ниже:

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

Но этот скрипт chmod все, потратит много времени.
Как chmod только измененные папки и файлы после checkout?

1 Ответ

0 голосов
/ 14 января 2019

Продвинутый find!

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

Как вы, возможно, и предполагали, да, это так же интуитивно понятно, как и выглядит - find говорит работать только с файлами и каталогами, которые не имеют разрешения 0777 (или rwxrwxrwx).

В качестве альтернативы, чтобы избежать чрезмерных вызовов chmod, вы можете использовать xargs:

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

С некоторыми изменениями xargs вы запустите chmod только один раз, сэкономив много времени и повысив общую производительность. См. max xargs для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...