Git pull в среде Linux меняет владельца файлов

12

Почему каждый раз, когда я выполняю git pullкоманду на своем работающем сервере, владелец файлов меняется? Я продолжаю делать это вручную chown john:john index.php.

Что мне нужно изменить, чтобы, когда я это сделал git pull, владельцем файлов автоматически становился или оставался john?

PinoyStackOverflower
источник
1
Является ли johnвладелец текущего каталога?
user000001
Да, Джон является владельцем каталога :)
PinoyStackOverflower
1
Какой пользователь работает git pull?
Cuonglm
Пользователь root @Gnouc, я вошел на наш сервер через SSH как пользователь root :)
PinoyStackOverflower,

Ответы:

11

Когда вы используете git pull(что эквивалентно git fetch; git merge), git обновляет файлы без изменения владельца (git не хранит эту информацию). Но если есть новые файлы для создания, текущий пользователь будет назначен владельцем.

Существует другое решение, чтобы решить эту проблему. Возможно, проще добавить post-updateхуки (в вашем .git/hooksкаталоге) для автоматического вызова chown john:john . -Rпосле слияния / вытягивания ( см. Пример этого решения SO ).

Альтернативные решения:

  • Запустите git pullот имени пользователя john вместо root (для этого потребуется разрешение на запись в john для каталога .git).
  • Создайте ловушку для развертывания, которая будет использовать john в качестве пользователя, либо делать chown после обновления (так что вам придется делать git pullэто post-receiveв ловушке чистого репо).
Asenar
источник
Что делать, если вы делаете git fetchот имени пользователя root, а затем git mergeот имени пользователя john? Джону все еще будут нужны права на запись для .gitкаталога?
Wildcard
Да, чаще всего. git fetchкак root, новые файлы в .git / objects` могут иметь root в качестве владельца. git mergeпоскольку пользователь Джон (в большинстве случаев) попытается перезаписать хотя бы .git/indexи .git/HEAD(который может быть удален / создан при каждом изменении, я полагаю) и записать некоторые файлы в .git/objects/. + любые новые файлы в вашем рабочем каталоге. Может быть, есть исключения с ускоренным слиянием, например.
Асенар