Сдерживающие полномочия файла с Мерзавцем

Я хочу к управлению версиями свой веб-сервер, как описано в Управлении версиями для моего веб-сервера путем создания мерзавца repo из моего /var/www directory. Моя надежда состояла в том, что я затем смогу продвинуть веб-контент от нашего dev сервера до GitHub, вытяните его к нашему рабочему серверу и потратьте остальную часть дня в пуле.

По-видимому, петля в моем плане - то, что Мерзавец не будет уважать полномочия файла (я не попробовал его, только читая об этом теперь.) Я предполагаю, что это имеет смысл в этом, различные поля склонны иметь различные установки пользователя/группы. Но если я хотел вызвать полномочия распространить, зная, что мои серверы настроены то же, у меня есть какие-либо опции? Или существует ли более легкий способ приблизиться к тому, что я пытаюсь сделать?

101
задан Community 23 May 2017 в 12:26
поделиться

2 ответа

git-cache-meta , упомянутый в вопросе SO « git - как восстановить права доступа к файлу, по мнению git, файл должен быть? » (и git FAQ ) - более прямолинейный подход.

Идея состоит в том, чтобы сохранить в файле .git_cache_meta права доступа к файлам и каталогам.
Это отдельный файл, версия которого не контролируется непосредственно в репозитории Git.

Вот почему его используют:

$ git bundle create mybundle.bdl master; git-cache-meta --store
$ scp mybundle.bdl .git_cache_meta machine2: 
#then on machine2:
$ git init; git pull mybundle.bdl master; git-cache-meta --apply

Итак, вы:

  • связываете свое репо и сохраняете соответствующие права доступа к файлам.
  • скопируйте эти два файла на удаленный сервер
  • восстановите там репо и примените разрешение
43
ответ дан 24 November 2019 в 04:44
поделиться

Git - это система контроля версий, созданная для разработки программного обеспечения, поэтому из всего набора режимов и разрешений она хранит только исполняемый бит (для обычных файлов) и бит символической ссылки. Если вы хотите сохранить полные разрешения, вам понадобится сторонний инструмент, например git-cache-meta (, упомянутый VonC ), или Metastore (используется etckeeper ). Или вы можете использовать IsiSetup , который IIRC использует git как бэкэнд.

См. Страницу Интерфейсы, внешние интерфейсы и инструменты на Git Wiki.

60
ответ дан 24 November 2019 в 04:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: