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

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

Трассировка (последний последний вызов): файл «/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, при запуске return app.main()

Файл "/usr/lib/python2.5/site-packages/gitosis-0.2-py2.5.egg/gitosis/app.py", строка 38, в основном файле self.handle_args(parser, cfg, options, 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, имя файла)

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

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

(...)

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

git commit -m "исправить разрыв строки" --amend

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

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


person Community    schedule 19.08.2009    source источник


Ответы (2)


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

person ebneter    schedule 23.08.2009
comment
Работал отлично. Мне также пришлось сделать дополнительный $git merge origin/master - person Shoan; 08.08.2010
comment
Работал на меня. Спасибо. - person cjungel; 10.11.2014

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

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

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

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

cd gitosis-admin

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

e.g.

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

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

sudo -H -u git git push -f мастер происхождения

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

person Marc    schedule 01.04.2010