Здрасти. К делу!

Git откровенно насрать на права доступа файлов. И после клонирования репы эти права будут установлены по umask пользователя.

Ситуация не критичная, но иногда случаются моменты, когда нужно все эти права сохранить и после клона восстановить.

На помощь приходит костыль, всё в лучших традициях!

#!/bin/bash

find . -type f -exec stat --format='%a %n' {} \; > permissions.txt
git add permissions.txt
git commit -m "на залупе лешего вертели"
git push

Пробегаемся по всем файлам и каталогам, записываем текущие права в файл permissions.txt, коммитим, пушим.

Ну и скрипт для восстановления прав:

#!/bin/bash

if [ -f permissions.txt ]; then
  while read perm file; do
    if [ -f "$file" ]; then
      chmod "$perm" "$file"
    fi
  done < permissions.txt
fi
Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Вот и вся наука. По желанию вешаешь это на Git Hook (post-checkout, post-merge) и автоматизируешь.

Как автоматизировать, писал в этом посте, на примере можешь адаптировать.

А ещё есть git-restore-mtime для восстановления метаданных времени модификации файлов.

Такие дела, изучай…