Назад | Перейти на главную страницу

Gitolite gl-post-init Hook Automation

ОТВЕТ, РАЗМЕЩЕННЫЙ НИЖЕ

В настоящее время я нахожусь в процессе настройки локального сервера git / разработки и столкнулся с загвоздкой с gitolite post-hook.

Чтобы дать обзор того, чем я сейчас занимаюсь.

Я установил локальный сервер, который содержит 4 ТБ RAID10, используемый в качестве репозитория git, машина также должна использоваться в качестве локальной машины разработки и для оптимизации обслуживания, я пытаюсь автоматизировать процесс создания виртуальных хостов Apache при создании нового репозитория создается через гитолит "git-post-init".

Я надеюсь достичь этого, клонировав ветку программного обеспечения репозитория (см. Код ниже), добавив конфигурацию apache vhost и затем символически связав ее с отсканированным каталогом apache.

Процесс почти кажется правильным, так как я могу клонировать репозиторий, добавить несколько начальных файлов и создать файл конфигурации, но когда я пытаюсь выполнить какие-либо команды, связанные с git, в репозитории, мне предоставляется следующая ошибка

fatal: Not a git repository: '.'

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

git status

Что работает ... просто кажется, что при попытке сделать что-либо из этого внутри хука - нет.

Ниже приведен код, который используется для крючка с удаленной дополнительной конфигурацией для его сокращения.

#!/bin/sh

# This will create an apache virtualhost file and store it in the
# repositories conf/reponame.conf directory and then symlink it to
# /home/git/apache/reponame.conf
#
# A new entry will then be created in the hosts file.

echo "Creating a new X Studios project"
echo "Git Project config v0.1 author Nickolas Whiting: Oct 20, 2011" 

REPO=$HOME/repos
REPO_PATH=$HOME/repos/$GL_REPO
cd $REPO
echo "Cloning repo into $REPO_PATH"
git clone $GL_REPO_BASE_ABS/$GL_REPO
cd $REPO/$GL_REPO
echo "Working in $PWD"
echo "Adding .gitignore file"
touch .gitignore
echo "removed for space" >> .gitignore
git add -u
echo "Commiting changes to repository"
git commit -m "Adding ignore file"
git push
echo "Adding branches"
git branch --track management origin/management
git branch --track design origin/design
git branch --track software origin/software
echo "Commiting new branches"
git add .
git commit -m "Inital Project Setup. Make sure you use the correct branch for what you are doing!"
git push
echo "Checking out the software branch"
git checkout software
echo "Creating Apache Virtualhost configuration"
echo "Removed for space" >> $REPO_PATH/conf/$GL_REPO.conf
echo "Creating symbolic link"
ln -s $REPO_PATH/$GL_REPO.conf $HOME/apache/$GL_REPO.conf
echo "Commiting changes to the repository"
echo "DONE"

Я новичок в написании сценариев bash, поэтому, если что-то не так или что можно сделать лучше, дайте мне знать,

Спасибо за помощь!

ОТВЕТ

Если у кого-нибудь еще была эта проблема

Видимо при запуске внутри gl перехватывает GIT_DIR переменная установлена ​​в '.' (что очевидно) установка этого в каталог репозитория .git решает проблему

GIT_DIR=$PWD/.git

Надеюсь, это сэкономит кому-то время, которое я потратил на это!

При запуске внутри хука git переменная GIT_DIR устанавливается в '.' (что очевидно) установка этого в каталог репозитория .git решает проблему

GIT_DIR=$PWD/.git