Почему каждый раз, когда я выполняю git pull
команду на своем работающем сервере, владелец файлов меняется? Я продолжаю делать это вручную chown john:john index.php
.
Что мне нужно изменить, чтобы, когда я это сделал git pull
, владельцем файлов автоматически становился или оставался john
?
john
владелец текущего каталога?git pull
?Ответы:
Когда вы используете
git pull
(что эквивалентноgit fetch; git merge
), git обновляет файлы без изменения владельца (git не хранит эту информацию). Но если есть новые файлы для создания, текущий пользователь будет назначен владельцем.Существует другое решение, чтобы решить эту проблему. Возможно, проще добавить
post-update
хуки (в вашем.git/hooks
каталоге) для автоматического вызоваchown john:john . -R
после слияния / вытягивания ( см. Пример этого решения SO ).Альтернативные решения:
git pull
от имени пользователя john вместо root (для этого потребуется разрешение на запись в john для каталога .git).git pull
этоpost-receive
в ловушке чистого репо).источник
git fetch
от имени пользователя root, а затемgit merge
от имени пользователя john? Джону все еще будут нужны права на запись для.git
каталога?git fetch
как root, новые файлы в .git / objects` могут иметь root в качестве владельца.git merge
поскольку пользователь Джон (в большинстве случаев) попытается перезаписать хотя бы.git/index
и.git/HEAD
(который может быть удален / создан при каждом изменении, я полагаю) и записать некоторые файлы в.git/objects/
. + любые новые файлы в вашем рабочем каталоге. Может быть, есть исключения с ускоренным слиянием, например.