2013-02-25 5 views
11

Я заметил, что, когда я выхожу из своего github-репо на сервере разработки (Red Hat), право собственности на файлы изменяется после завершения pull. Файл .git, который раньше принадлежал мне, но потом заметил, что он будет записывать файлы как я, и мне нужно, чтобы они записывали файлы как другой пользователь. Поэтому я изменил права собственности на каталог .git.Как сохранить git от изменения права собственности на файл

Я наткнулся на git config core.filemode, который был правдой. Я с тех пор задал ему ложь. Я не видел разницы, установив для этого значение false. Что я должен сделать, чтобы изменить права на мои файлы.

Этого не происходит со мной локально.

ответ

7

Git не является сервером развертывания. Он записывает файлы как тех, кто пишет файлы, это вы. Если вам нужны разрешения и права собственности, вы можете приготовить крюк после проверки и прочитать его в файле конфигурации или что-то решить, что делать дальше.

+0

Из моего опыта с этим я не могу сказать, что это совершенно верно. Если я изменяю права собственности на файлы в каталоге, а затем запускаю «git pull», я получаю разные владельцы для разных файлов. Некоторый корень, а некоторые меня и некоторые не тронут. – user2108258

+2

git не сохраняет права доступа к файлам, поэтому любое поведение, с которым вы сталкиваетесь, напрямую не связано с git как VCS. – wRAR

+0

Кому должен принадлежать каталог .git? Мой пользователь на сервере - тот, который я использую, чтобы вытащить из Github. Однако, если я использую себя как пользователь, файлы записываются на диск как я. Но я хочу, чтобы они принадлежали веб-серверу. – user2108258

20

Если вам достаточно сохранить группу, вы можете установить флаг setgid в каталогах. См http://en.wikipedia.org/wiki/Setuid

Установка setgid разрешение на директории («CHMOD г + х») вызывает новые файлы и подкаталоги, созданные в нем, чтобы наследовать идентификатор группы, а не основной идентификатор группы пользователя, создавшего файл (идентификатор владельца никогда не изменяется, только идентификатор группы). Недавно созданные подкаталоги наследуют бит setgid. Таким образом, это позволяет общему рабочему пространству для группы без неудобства требовать от членов группы явно изменять свою текущую группу перед созданием новых файлов или каталогов. Обратите внимание, что установка разрешения setgid в каталоге влияет только на идентификатор группы новых файлов и подкаталогов, созданных после установки бита setgid, и не применяется к существующим объектам. Установка setgid бит на существующих подкаталогов должно быть сделано вручную, с помощью команды, такие как:

[[email protected]]# find /path/to/directory -type d -exec chmod g+s '{}' \;

+2

Хорошее решение - всегда предпочитайте видеть решение проблемы, а не комментарий, основанный на том, что делает конкретное программное обеспечение - использование бит-бит - легкая победа здесь. –

Смежные вопросы