LINUX.ORG.RU

Git ошибка «Request not supported: '/patch/to/repo.git/info/refs?service=git-upload-pack'»

 , ,


0

1

Всех приветствую!

Пытаюсь накодить обвязку для самопискного менеджера пакетов в проекте на базе git. Проще говоря дергаю git-http-backend из под PHP через CGI.

И чот ничего понять не могу, вроде передаю все требуемые для запуска параметры, никаких жалоб на нехватку данных нет, но на каждый запрос летит 404, а в логи «Request not supported: '/patch/to/repo.git/info/refs?service=git-upload-pack'».

Решил изучить код гита чтобы понять на что он может так ругаться, и в итоге нашел в файле http-backend.c функцию cmd_main - она единственная возвращает эту ошибку на весь бекенд. И хоть убей без комментов код понять не могу... Что эта функция вообще делает? Почему «if(!cmd)» приводит к этой ошибке и как ее решить?

Люди знающие в устройстве гита, молю помогите!

Что заносится в переменную cmd?

goingUp ★★★★★
()

Он ищет совпадение с регулярными выражениями. Видимо, нужно это:

    {"GET", "/info/refs$", get_info_refs},

Т.е. часть ?service=git-upload-pack мешает совпадению.

xaizek ★★★★★
()
Ответ на: комментарий от xaizek

Хм... Самое смешное что этот запрос, который он «не поддерживает», генерируется при выполнении git clone.

Бредятина какая-то, либо я чот не догоняю.

TuzelKO
() автор топика
Ответ на: комментарий от xaizek

Спасибо! Ткнули носом в «каку» XD

Ошибка найдена. Я забыл что в REQUEST_URL входит и часть с сериализованным GET запросом - GIT его воспринимает только как отдельную, уже отрезанную часть и в составе ссылки он не нужен.

Я добавил отчекрыживание всего что после "?" (включая сам знак) и запрос успешно обработался.

TuzelKO
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.