Я занимаюсь разработкой веб-приложения с использованием Gitosis (Debian Lenny), которое я хочу использовать в различных удаленных репозиториях / хранилищах, что позволяет использовать «передовые», «релиз-кандидаты» и «производственные» версии приложение с зеркальными физическими веб-каталогами и кодовой базой. Я бы предпочел, чтобы в каждом каталоге была ветвь приложения. Итак, один репозиторий, три «живых» версии.
Я новичок в Git, так что, возможно, есть лучшее решение, но я дошел до того, что нашел способ прикрепить хуки к ветвям (которых я не нашел) или написать хук, который будет фильтр, для которого ветвь фиксируется.
У меня вопрос о том, как настроить хук после обновления, который будет проверять подтвержденную ветку, устанавливать переменную для каталога на основе этой ветви и буквально копировать кодовую базу в этот каталог, где он может быть мгновенно доступен через HTTP
git rev-list --branches --pretty=oneline --max-count=1
вернет что-то вроде:
cc5112ba59bc82f2e847ac264317c062ce80f69f test commit
но мне нужно название самой ветви, например, "экспериментальный" или "мастер".
Так что в основном я ищу что-то вроде:
1) Получить имя только что зафиксированной ветви (например, "master", "экспериментальный") в строку
2) Используйте Bash case, чтобы объявить, какой каталог использовать
3) Запустите что-то вроде «git archive --format = tar HEAD | (cd $ LOCATION && tar xf -)», где location - это то, что было возвращено из case.
Я подумал, что подхожу ближе к следующему, но понял, что оно не возвращает имя ветки, а вместо этого сообщение фиксации:
#!/bin/sh
# Get substr from "sha1[space]commit-msg"
BRANCH=$(git rev-list --pretty=oneline --branches --max-count=1 | awk '{split($0,array," ")} END{print array[2]}')
case $BRANCH in
"experimental")
dir="/home/APP_NAME/experimental"
;;
"master")
dir="/home/APP_NAME/production"
;;
esac
# move to location and copy files
git archive --format=tar HEAD | (cd $loc && tar xf -)
Я осознал, что если я всегда ставлю ветку в качестве первой части коммита, я мог бы выполнить что-то подобное, но я действительно не хочу об этом беспокоиться.
Любая помощь будет принята с благодарностью. Заранее спасибо!