гитолитовое зеркало не работает

Я уже некоторое время использую gitolite и на этой неделе настроил второй сервер в качестве зеркала для всех моих репозиториев.

У меня есть следующие строфы в файле gitolite.conf, который был отправлен на оба сервера:

repo data/[0-9]+/..*
    C       =   @developers
    RW+     =   @developers
    R       =   @all
    option mirror.master  = oxygen
    option mirror.slaves  = nitrogen

repo mirror_test
    RW+     =   @all
    option mirror.master  = oxygen
    option mirror.slaves  = nitrogen

У меня есть репозитории с именами «data/11756/machine11756.git», «data/11756/recorded11756.git» и «data/11779/machine11779.git», всего более 70.

После настройки зеркалирования и его тестирования через репозиторий mirror_test. Мне нужно было получить копии репозиториев на подчиненном устройстве, поэтому я написал скрипт для запуска «ssh gitolite mirror push азот». Только девять из этих отправок зеркала были успешными, остальные вернулись:

fatal: '/home/git/repositories/data/11756/machine11756.git' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Что здесь происходит?


person jimzat    schedule 24.09.2019    source источник
comment
Чтобы двигаться вперед, я решил вручную скопировать репозитории с мастера на подчиненный. Как только я это сделал, я повторно запустил свой скрипт (чтобы проверить), и все оказалось в порядке. Все это, как говорится, не является непосредственной проблемой, но хотел бы, чтобы кто-нибудь высказал мнение о том, что могло пойти не так, чтобы я не столкнулся с этим в будущем, если я настрою какие-либо дополнительные ведомые устройства.   -  person jimzat    schedule 25.09.2019


Ответы (1)


Синтаксис для зеркалирования Gitolite должен быть следующим:

ssh git@host mirror push slave-server-name repo-name

В вашем случае gitolite может быть записью в ~/.ssh/config.

Помимо возможной проблемы с синтаксисом SSH, это может привести к проблемам с доступом или разрешениями на удаленной стороне.

person VonC    schedule 24.09.2019
comment
У меня есть псевдоним в моем файле ~/.ssh/config, определяющий Host gitolite как hostnameoxygen. Если бы это было НЕ так, то НИ ОДИН из толчков не сработал бы. Вопрос в том, почему НЕКОТОРЫЕ из них терпят неудачу? - person jimzat; 25.09.2019
comment
@jimzat Я согласен, это не проблема синтаксиса, поэтому бит доступа или разрешения я упоминаю в ответе. Что возвращает гитолитовая трассировка? (gitolite.com/gitolite/) - person VonC; 26.09.2019
comment
Как я могу использовать доступ к gitolite для проверки зеркальных толчков? Где я должен запустить этот мастер или ведомый? Какое имя пользователя мне использовать, git? - person jimzat; 27.09.2019
comment
@jimzat Да (gitolite.com/gitolite/cookbook.html#access), из подчиненный, где у вас есть сообщение об ошибке. Предполагается, что имя пользователя авторизовано Gitolite для доступа к удаленному репозиторию (и добавлено в Gitolite: gitolite.com/gitolite/basic-admin#addremove-users) git - это только учетная запись, используемая для установки Gitolite. - person VonC; 27.09.2019
comment
Информация о запуске ssh ‹git_slave› на моей локальной машине сообщает, что я пользователь JiMZ_laptop (тот же пользователь появляется, когда я запускаю информацию о git_master). Если я затем запущу gitolite access -s data/11755/machine11755 JiMZ_laptop W в любой момент входа в систему под пользователем git на git_slave, я получу p gitolite.conf:24 C = @developers/ A gitolite.conf:25 RW+ = @developers - person jimzat; 28.09.2019
comment
@jimzat Установлен ли gitolite с выделенной учетной записью git? - person VonC; 28.09.2019
comment
да, как на главном, так и на подчиненном серверах gitolite я установил gitolite для запуска под выделенным пользователем с именем git - person jimzat; 30.09.2019
comment
@jimzat ssh <git_slave> info на моем локальном компьютере сообщает, что я пользователь JiMZ_laptop: он должен сообщить git, чтобы был задействован gitolite. - person VonC; 30.09.2019
comment
Моя локальная машина не имеет права записи на слейв, поэтому JiMZ_laptop не может туда пушить, я пушу с ведущего на ведомый. Если я запускаю информацию об азоте по ssh от кислорода, я получаю hello server-oxygen, это git@Nitrogen. - person jimzat; 01.10.2019
comment
@jimzat, так ... теперь он сообщает git? - person VonC; 01.10.2019
comment
Сервер всегда сообщал о себе как git@[oxygen|nitrogen] - person jimzat; 01.10.2019
comment
@jimzat Хорошо, меня смутил ваш комментарий ssh <git_slave> info на моем локальном компьютере, который сообщает, что я пользователь JiMZ_laptop: пользователь JiMZ_laptop, а не git - person VonC; 01.10.2019
comment
Чтобы создать новый репозиторий на сервере (ах) с моей локальной машины, я делаю git init, git add., git commit, git remote add origin gitolite:data/999/junk9999.git, git push origin HEAD — все идет хорошо получить новое репо на ОБА мастер и раб. Если я попытаюсь передать существующий репозиторий от главного устройства к подчиненному через ssh gitolite mirror push азотные данные/11755/machine11755, подчиненное устройство вернет мастеру фатальную ошибку. - person jimzat; 01.10.2019
comment
@jimzat Выглядит хорошо. Существует ли /home/git/repositories/data/999/junk9999.git после этого нажатия на удаленной стороне? - person VonC; 01.10.2019
comment
Да, Junk9999 ДЕЙСТВИТЕЛЬНО существует, проблема в том (и в этом суть ОП), что я не могу запустить зеркальное нажатие на все главные репозитории, чтобы перенести их на подчиненное устройство. - person jimzat; 01.10.2019
comment
@jimzat Хорошо, странно. Согласно вашему gitolite access, если вы являетесь частью группы разработчиков, у вас должна быть возможность создавать там репозиторий, получать к нему доступ и изменять его. - person VonC; 01.10.2019
comment
@jimzat На всякий случай: groups.google.com/forum/# !topic/gitolite/tmmp4Q5pJLI и gitolite.com/gitolite/ - person VonC; 01.10.2019