Gitolite gl-post-init Hook Automation

ОТВЕТИТЬ, НИЖЕ

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

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

Я настроил локальный сервер, который содержит 4 ТБ RAID10, который используется в качестве git-репозитория, машина также будет использоваться в качестве локальной машины для разработки и для упрощения обслуживания. Я пытаюсь автоматизировать процесс создания виртуальных хостов Apache при создании нового репозитория. создается через gitolite "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

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

1 ответ

Решение

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

GIT_DIR=$PWD/.git
Другие вопросы по тегам