Git post-receive, чтобы оформить каждую ветку в разные папки?
Базовая настройка нашего рабочего процесса Git - это пустой репозиторий на локальном сетевом сервере, на котором два разработчика работают.
Мы хотели бы автоматически копировать (извлекать) каждую ветвь, которая перемещается в другое место на нашем локальном сетевом сервере. В качестве примера:
Перемещение копий ветки «развернуть» в подпапку «разработка». Нажатие копий ветки «master» в подпапке «master».
Проблема, с которой мы сталкиваемся, заключается в том, чтобы заставить это сделать получение. Вот что у нас сейчас есть:
#!/bin/bash
while read oldrev newrev ref
do
branch=`echo $ref | cut -d/ -f3`
if [ "master" == "$branch" ]; then
GIT_WORK_TREE=/master
git checkout -f $branch
echo 'Changes pushed master.'
fi
if [ "develop" == "$branch" ]; then
GIT_WORK_TREE=/develop
git checkout -f $branch
echo 'Changes pushed to develop.'
fi
done
Полученная ошибка:
'remote: fatal: эта операция должна выполняться в удаленном рабочем дереве: изменения должны быть разработаны.'
Как и следовало ожидать от этой ошибки - на самом деле ничего не проверено.
Я также пробовал пост-получить таким образом, но та же проблема:
#!/bin/bash
while read oldrev newrev ref
do
branch=`echo $ref | cut -d/ -f3`
if [ "master" == "$branch" ]; then
git --work-tree=/master checkout -f $branch
echo 'Changes pushed master.'
fi
if [ "develop" == "$branch" ]; then
git --work-tree=/develop checkout -f $branch
echo 'Changes pushed to develop.'
fi
done
Может ли кто-нибудь объяснить, что я делаю здесь не так (не стесняйтесь объяснить это, как вы бы 3-летнему :)). Благодарю.
Чтобы сделать ответ более понятным для будущих читателейТорек ударил его по голове. Я использовал--work-tree=/master
попытаться добраться до папки «master» внутри корня моего голого репозитория (например, рядом с «ответвлениями», «зацепками» и т. д.). Как только я изменил это на--work-tree=./master
(обратите внимание на точку перед косой чертой) все работает как я ожидал.