Я нахожусь в ситуации, когда у меня есть локальное исходное дерево, клонированное из репозитория git, которое я пытаюсь отправить в новое удаленное место.
Я установил gitolite на сервер с помощью пакетного метода (deb). Я следовал инструкциям вики и успешно завершил git clone gitolite@localhost:gitolite-admin
. Затем я добавил новый репозиторий и свои открытые ключи. Я могу клонировать этот репозиторий на свою машину (клиент), но не могу в него втиснуться. документ по устранению неполадок SSH описывает мой сценарий точно:
рассмотрим git@server:repositories/reponame.git. Операция клонирования будет работать - вы используете полный путь Unix (при условии, что значение по умолчанию $REPO_BASE), и поэтому оболочка находит репозиторий там, где вы сказали, что он будет. Однако, когда вы нажимаете, срабатывает хук обновления gitolite, который не запускается, потому что некоторые переменные среды, которые он ожидает, отсутствуют.
Итак, я могу клонировать с помощью
git clone [email protected]:repositories/reponame.git
но не с
git clone [email protected]:reponame.git
(я получаю fatal: 'reponame.git' does not appear to be a git repository
)
Если я внесу изменения в клонированный (пустой) репозиторий и попытаюсь нажать, я получу
удаленный: ENV GL_RC не установлен удаленный: BEGIN не удалось - компиляция прервана на хуках/обновлении строки 20. удаленный: ошибка: хук отказался обновлять refs/heads/master
Итак, похоже, это связано с префиксом - однако, как я уже упоминал, я не могу клонировать репо без включения спецификатора repositories/
в путь.
Это и имеется в виду под "обходом гитолита"? Как я могу исправить ситуацию? В конечном счете, я хочу передать все ранее существовавшее исходное дерево на новый удаленный сервер (я добавил новый сервер в качестве удаленного в .git/config
) и сохранить историю.