#git #permissions #githooks #git-config
#git #разрешения #githooks #git-config
Вопрос:
Я получаю эту ошибку:
Архитектура и рабочий процесс выглядят так:
1) разработчик переходит к удаленному репозиторию (dev server) через ssh-> 2) У Dev-сервера есть перехват post receive, который вызывает скрипт bash на реальном сервере через ssh->
#!/bin/bash
while read oldrev newrev refname
do
branch=$(git rev-parse --symbolic --abbrev-ref $refname)
# Use this if-sentence to only update live server if branch is the wanted branch, e.g. master or stable
if [[ "desarrollo" == "$branch" ]]; then
# Fetch this branch from live-server
ssh push@mpdvsweb-test.jusbaires.gov.ar '/bin/gitmirror'
fi
done
3) Живой сервер выполняет скрипт, который извлекает данные с сервера разработки ->
#!/bin/bash
cd /var/www/penal_test_git
git fetch git-repo
git merge -m 'Overwriting live server' -s recursive -X theirs git-repo/desarrollo
4) Я получаю следующую ошибку на компьютерах каждого разработчика (для нас установлен git config —global, но он не работает, я также попытался установить его для репозитория, и он тоже не работает)
что может быть ошибкой?
git config --local -l
возвращает user.name и user.email и git config -l
возвращает user.name и user.email дважды, возможно, один из них локальный, а другой глобальный. На другом компьютере разработчика глобальный является единственным установленным и тоже не работает
Ответ №1:
Я решил это, я изменил три вещи, и это сработало. Сначала я удалил идентификатор локального репозитория, а затем переопределил глобальную конфигурацию (я не знаю, повлияло ли это на ситуацию, потому что у меня уже была правильно настроена глобальная конфигурация). Затем мне пришлось изменить bash на моем реальном сервере на fetch —all, в противном случае без этого флага это приводит к конфликтам слияния, если кто-то редактирует файлы на реальном сервере напрямую, потому что, когда выполняется перехват сервера разработчиков, это не позволит произойти слиянию, таким образом, все переопределяется:
#!/bin/bash
cd /var/www/penal_test_git
git fetch --all
git reset --hard git-repo/desarrollo
Наконец, у файлов было разрешение пользователя root вместо www-data, потому что другой разработчик изменил его, и это не позволило переопределить файл с помощью выборки. Это часть другой ошибки, но она помогла заставить ее работать.