Git post-receive, чтобы оформить каждую ветку в разные папки?
Базовая настройка нашего рабочего процесса Git - это пустой репозиторий на локальном сетевом сервере, на котором два разработчика работают.
Мы хотели бы автоматически копировать (извлекать) каждую ветвь, которая перемещается в другое место на нашем локальном сетевом сервере. В качестве примера:
Толкаяразработать» копии филиала в 'разработать» подпапка. Толкаямастер' копии филиала вмастер' подпапка.
Проблема, с которой мы сталкиваемся, заключается в том, чтобы заставить это сделать получение. Вот что у нас сейчас есть:
#!/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: Эта операция должна выполняться в рабочем дереве remote: изменения, направленные на разработку. '
Как и следовало ожидать от этой ошибки - на самом деле ничего не проверено.
Я также пробовал пост-получить таким образом, но та же проблема:
#!/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
чтобы попытаться добраться до папки под названием "мастер' внутри корня моего голого репо (например, рядом с 'ветви', 'крючки так далее). Как только я изменил это на--work-tree=./master
(обратите внимание на точку перед косой чертой) все работает как я ожидал.