git pull
라이브 서버에서 실행할 때마다 파일 소유자가 변경되는 이유는 무엇입니까 ? 나는 그것을 수동으로 계속한다 chown john:john index.php
.
git pull
파일 소유자가 자동으로 되거나 유지되도록 하려면 무엇을 변경해야 합니까 john
?
답변1
git pull
(와 동일 )을 사용하면 git fetch; git merge
git은 새 파일을 생성하고 이전 소유권에 대해 신경 쓰지 않습니다(git은 해당 정보를 저장하지 않습니다).
이 문제를 해결하기 위한 다양한 솔루션이 있습니다. 더 간단한 접근 방식은 병합/가져오기 후에 자동으로 호출할 post-update
후크(디렉토리에 .git/hooks
) 를 추가하는 것입니다 (chown john:john . -R
예를 보려면 SO 솔루션을 참조하세요.).
대체 솔루션은 다음과 같습니다.
git pull
루트 대신 사용자 john으로 실행합니다. (이렇게 하려면 .git 디렉터리에 대한 john 쓰기 권한이 필요합니다.)- john을 사용자로 사용하는 배포용 후크를 생성하거나 업데이트 후 chown을 수행합니다(따라서
git pull
베어 저장소의 후크 내에서 수행해야 합니다).post-receive
리눅스에서는 이것이 또 다른 해결책이 될 수 있습니다 setuid
/setgid