GIT, ГИТОЗ, ВЕБ-САЙТ - Пути

У меня есть сервер Ubuntu, и я установил git и gitosis. Я новичок в администрировании серверов, и у меня есть следующее дерево папок gitosis: /home/git/repositories

Я отредактировал права пользователя на разные репозитории, клонировав gitosis-admin.git на свой локальный компьютер, отредактировал gitosis.conf и добавил открытые ключи пользователя в каталог ключей и отправил его обратно на сервер. Это было протестировано с различными репозиториями и работами.

Меня действительно смущают руководства, описывающие, как можно использовать gitosis для создания репозитория, который можно использовать для управления исходным кодом папки в веб-домене.

Я создал пустой репозиторий в веб-папке, используя SSH Putty; добавил и зафиксировал в нем файлы. Затем клонировал его на локальную машину с помощью

git clone git(at)server:web_repo.git

Это было успешно.

Проблема в том, что когда я пытаюсь отправить его обратно на сервер, в пути /home/git/repositories создается репозиторий, а репозиторий веб-папки не затрагивается.

Я попытался объединить информацию из:

http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way

http://urbanpuddle.com/articles/2008/07/11/installing-git-on-a-server-ubuntu-or-debian

http://danielmiessler.com/blog/using-git-to-maintain-your-website

http://toroid.org/ams/git-website-howto

http://www.ibm.com/developerworks/web/library/wa-git/


person Tubby    schedule 02.11.2009    source источник


Ответы (3)


Может быть полезно узнать, какую версию Ubuntu вы используете. Gitosis вероятно находится в репозитории apt-get и точно в Debian Lenny. По моему опыту, установка из репозитория намного проще. Учитывая возможные проблемы с безопасностью в этом программном обеспечении, я настоятельно рекомендую использовать репозиторий. Но это зависит от вас. Если вытягивание и подталкивание увенчались успехом, в этом подходе нет ничего плохого.

Когда вы отправляете в репозиторий git с помощью gitosis, хуки (здесь вам нужен post-update) выполняются как пользователь gitosis или git. Я подозреваю, что ваша проблема связана с этим. Вы можете рассмотреть возможность написания хука suid post-update, чтобы он мог выполняться как ваша учетная запись пользователя или как пользователь веб-редактора или веб-сервера. Вы можете поочередно chown -R git:git (или gitosis:gitosis в зависимости от вашей установки) клонировать локальное развертывание. Если вам нужно отредактировать эти репозитории на сервере, не забудьте использовать sudo -u git для внесения любых изменений от имени соответствующего пользователя.

person tychoish    schedule 23.11.2009

Настроили ли вы хук после обновления в /home/git/repositories-repo, как описано в разделе «Включение автоматического обновления при отправке изменений из вашего ящика разработчика» на http://danielmiessler.com/blog/using-git-to-maintain-your-website ? Это должно быть уловкой, чтобы получить контент из центрального репо в живой клон. Чтобы это работало, пользователю git необходим доступ на запись к live-clone.

person kusma    schedule 03.11.2009
comment
Благодарю за ваш ответ. Да, изменил файл /home/git/repositories/hooks/post-update на: #!/bin/sh # WORKDIR=/var/www/folder/folder/folder/html_folder/ export GIT_DIR=$WORKDIR/.git pushd $WORKDIR › /dev/null git pull popd › /dev/null Не уверены, что exec git-update-server-info актуален? Затем 755 сделал это. Я не знаю, как настроить git-user, чтобы он имел права на запись в /var/www/folder/folder/folder/html_folder, хотя.... - person Tubby; 04.11.2009
comment
Хорошо, теперь запустил chown -R в папке репозитория git, и он все еще не работает. - person Tubby; 05.11.2009
comment
Я думаю, что pfote говорит о том, что вы должны удалить «#» перед назначением WORKDIR, так как оно закомментировано. - person kusma; 06.11.2009

из того, что вы написали в своих комментариях, ваш сценарий оболочки не работает, WORKDIR не установлен (эта строка является примечанием)

однако я не думаю, что это хорошая идея, что вы имеете в виду (за одним исключением: то, что вы пытаетесь обновить, - это ваш сервер разработки)

person pfote    schedule 05.11.2009
comment
Хорошая мысль — но я думал, что вся идея git и gitosis — ограниченный контроль версий. Конечно, мы тестируем наш код перед запуском, я просто хочу автоматизировать процесс от git repo до живого сервера... Похоже, что capistrano будет одним из решений, но я на Win-компьютере и хотел избежать установки еще большего количества программного обеспечения. когда (очевидно) возможно обновить сайт с помощью перехватчиков обновлений. - person Tubby; 06.11.2009
comment
теперь, когда вы упомянули capistrano, думаю, я знаю, что вы ищете: простой способ развернуть ваши вещи. git не заботится о развертывании, как и gitosis, неправильная область. пожалуйста, уточните/расширьте свой вопрос, нет особого смысла обсуждать это в комментариях - person pfote; 07.11.2009