Git pull в середовищі Linux змінює власника файлів


12

Чому щоразу, коли я виконую git pullна своєму прямому сервері, власник файлів буде змінено? Я продовжую робити вручну chown john:john index.php.

Що мені потрібно змінити, щоб коли я зробив а git pull, власник файлів автоматично виявився або залишився john?


1
Є johnвласником поточного каталогу?
user000001

Так, Джон - власник каталогу :)
PinoyStackOverflower

1
Який користувач працює git pull?
cuonglm

@Gnouc root user, я ввійшов на наш сервер в реальному часі через SSH як root користувач :)
PinoyStackOverflower

Відповіді:


11

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

Для вирішення цього питання існує різне рішення. Простіше, мабуть, додати post-updateгачки (у своєму .git/hooksкаталозі) для автоматичного виклику chown john:john . -Rпісля злиття / витягування ( див. Приклад SO SO для прикладу ).

Альтернативними рішеннями є:

  • Запустіть git pullяк користувача john замість root (для цього потрібні дозволи для запису в John для каталогу .git).
  • Створіть гачок, щоб зробити розгортання, яке або використовуватиме Джона як користувача, або зробіть хоун після оновлення (так що вам доведеться робити git pullвсередині post-receiveгака голого репо).

Що робити, якщо ви робите git fetchяк root, а потім git mergeяк користувач john? Чи буде ще Джону потрібні дозволи на запис для .gitкаталогу?
Wildcard

Так, більшість разів. git fetchяк root, нові файли в .git / object` можуть мати root як власника. git mergeоскільки користувач Джон (більшу частину часу) намагатиметься перезаписати щонайменше .git/indexі .git/HEAD(що може бути видалено / створено при кожній зміні, напевно), і записати деякі файли в .git/objects/. + будь-які нові файли у вашому робочому каталозі. Можливо, є винятки зі швидким злиттям вперед, наприклад.
Асенар
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.