Подтвердить что ты не робот

Как я могу оправиться от нажатия gitosis.conf с ошибками синтаксического разбора из-за разрывов строк?

Я успешно установил gitosis для Android-зеркала (содержащего несколько репозиториев git). Добавляя новый путь .git после writeable = в gitosis.conf, мне удалось вставить несколько разрывов строк. Сохранено, зафиксировано и отправлено на сервер, когда я получил следующую ошибку синтаксического анализа:

Traceback (последний последний вызов):  Файл "/usr/bin/gitosis-run-hook", строка 8, в     load_entry_point ('gitosis == 0.2', 'console_scripts', 'gitosis-run-hook')()

Файл "/usr/lib/python2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/app.py", строка 24, в run return app.main()

Файл "/usr/lib/python2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/app.py", строка 38, в главном     self.handle_args (парсер, cfg, опции, args)

Файл "/usr/lib/python2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/run_hook.py", строка 75, в handle_args     post_update (cfg, git_dir)

Файл "/usr/lib/python2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/run_hook.py", строка 33, в post_update     cfg.read(os.path.join(export, '..', 'gitosis.conf'))

Файл "/usr/lib/python2.5/ConfigParser.py", строка 267, при чтении     self._read (fp, filename)

Файл "/usr/lib/python2.5/ConfigParser.py", строка 490, в _read     поднять e

ConfigParser.ParsingError: файл содержит ошибки синтаксического анализа:./gitosis-export/../gitosis.conf

(...)

Я удалил разрыв строки и поправил фиксацию на

git commit -m "fix linebreak" --amend

Однако git push все же дает ту же самую ошибку. Это приводит меня к мысли, что гитоз не мешает мне делать дальнейшие толчки.

Как мне оправиться от этого?

4b9b3361

Ответ 1

Я делаю это все время.:-) Ответ заключается в том, чтобы войти на сервер gitosis и отредактировать копию файла конфигурации там. В домашнем каталоге пользователя, которому принадлежит экземпляр gitosis, должна быть ссылка с именем .gitosis.conf(она фактически указывает на gitosis-admin.git/gitosis.conf). Отредактируйте этот файл и устраните проблемы; тогда, когда вы нажмете дальше, все будет хорошо.

Ответ 2

На самом деле вы можете сделать что-то немного более умное. Поскольку gitosis-admin.git является архивом git, вы можете клонировать его локально, reset в рабочую версию и фиксировать изменение. Один трюк заключается в том, что вы должны делать все как пользователь "git".

Мы сделали это так, но мы планируем перейти на гитолит, который проверяет ошибки перед включением изменений именно по этой причине.

перейти в пустой каталог, к которому пользователь "git" имеет доступ на запись

sudo -H -u git git клон (каталог репозитория gitosis)/gitosis-admin.git

cd gitosis-admin

sudo -H -u git git rebase -i (идентификатор фиксации последнего известного рабочего состояния)

например.

sudo -H -u git git rebase -i HEAD ^^

с интерактивным флагом, сложнее сделать ошибку; следуйте указаниям, чтобы выбрать только право (известно для работы) commit

sudo -H -u git git push -f origin master

Флаг -f заставляет git выполнять push, даже если главная ветка в репо не является предком вашей новой ветки. Это должно устранить проблему, и вы должны иметь возможность выталкивать/тянуть как обычно из своих локальных ветвей.