Понадобилось настроить git репозиторий так, чтобы программист вносил изменения у себя на компе и имел возможность публиковать их на продакшн-сервере с сайтом без радостей использования файловых менеджеров. Ну и отменять внесённые изменения тоже одной строчкой кода. Приведу листинг того, как я реализовал это на Debian 5.0 Lenny:
apt-get update aptitude full-upgrade aptitude install git-core adduser git usermod -a -G mygroup git su git cd ~ mkdir .ssh && cd .ssh cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys git init vi .git/description cd .git/hooks chmod a+x update post-update post-receive git add . git commit -am "initial commit" git config --add receive.denyCurrentBranch ignore |
Добавить в .git/hooks/post-update:
git --git-dir=. --work-tree=.. reset --hard |
Вписать в .git/hooks/post-receive
#!/bin/bash cd .. env -u GIT_DIR git reset --hard master |
Ну и отменять внесённые изменения надо через:
git revert HEAD |
А можно подробнее разъяснить?
Интересует: зачем создан пользователь git? и описание hooks – что именно они делают…
так сказать разжевать для начинающих
Спасибо!
можно. пользователь создан, т.к. подразумевается что он будет владельцем всех редактируемых файлов и на его примере показано как можно настроить ссш аутентификацию на основе ключей без пароля. в принципе можно использовать уже имеющихся пользователей и это нормально.
что касается хуксов, то это скрипты, которые запускаются при наступлении определённого события. например, после получения коммита. подробнее можно почитать тут http://book.git-scm.com/5_git_hooks.html , потому как в двух словах не объяснишь – там очень много нюансов.
А что делает команда:
cat /tmp/id_rsa.john.pub << ~/.ssh/authorized_keys
в ней опечатка! должно быть:
cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
ею вы разрешаете на удалённом сервере авторизацию по ключу (без пароля)