У меня есть промежуточный сайт, который является рабочим каталогом репозитория git. Как настроить git, чтобы разработчик мог извлекать ветку или выпуск без изменения группы измененных файлов?
Пример. Допустим, у меня есть два разработчика, Робин и Дэвид. Они оба находятся в группе git-users, поэтому изначально у них обоих могут быть права записи на site.php.
-rw-rw-r-- 1 robin git-users 46068 Nov 16 12:12 site.php
drwxrwxr-x 8 robin git-users 4096 Nov 16 14:11 .git
После robin-server1 $ git pull origin master:
-rw-rw-r-- 1 robin robin 46068 Nov 16 12:35 site.php
drwxrwxr-x 8 robin git-users 4096 Nov 16 14:11 .git
И у Дэвида нет прав на запись на site.php, потому что группа изменилась с «git-users» на «robin». С этого момента Дэвид получит отказ в разрешении, когда попытается подключиться к этому репозиторию.
Лучше всего решить эту проблему, установив разрешения для всех каталогов. Если вы установите бит закрепления группы, все файлы в каталоге будут поддерживать группу каталога, когда члены группы изменят их. Итак, чтобы быстро установить это на промежуточном сайте, сделайте следующее:
chmod g+ws [directory]
find [directory] -type d -exec chmod g+ws {} \;
find [directory] -type f -exec chmod g+w {} \;
Первая команда устанавливает биты записи и закрепления для группы в каталоге верхнего уровня сайта. Второй затем находит все подкаталоги папки верхнего уровня и делает то же самое. Третий затем проверяет, есть ли у группы доступ на запись ко всем файлам.
Когда вы изначально создаете репозиторий git, вы можете сделать это автоматически, используя --shared
вариант:
git create --shared [directory]
Попробуйте использовать подмодули git, это должно быть решением того, что вам нужно.
Или, если вам это действительно не нужно, вы можете реализовать для этого несколько сценариев, которые будут хранить некоторые файлы перед извлечением, а затем извлекать их, но это также вызовет проблемы позже со слиянием.