git push большие файлы фатальный удаленный конец неожиданно зависает - проблема с прокси-сервером apache - PullRequest
1 голос
/ 23 октября 2010

У меня есть только настройка git-http-backend на машине WS2008 с использованием Apache и Basic Auth для pull и push.

Я могу создать пустой репозиторий на хост-сервере и клонировать его с помощью git clone http://user@server.com/repositories/Test.git

Это отлично работает, я могу добавлять файлы и отправлять их обратно. Это все прекрасно работает. Я думал, что у меня все это работает!

Я сейчас пытаюсь поместить несколько своих проектов в (C # .net вещи). Сначала я попытался просто скопировать каталог .git и поместить его на сервер, который, похоже, имел проблемы. Поэтому я подумал, что создам пустое хранилище, клонирую его на локальный компьютер, копирую в файлы, затем фиксирую и возвращаю на сервер. Кажется, все работает, пока я не попытаюсь нажать на файл sln. В этот момент он проходит сжатие и запись объектов и т. Д., Но выдает ошибки:

error: RPC failed; result=22, HTTP code = 417
fatal:  The remote end hung up unexpectedly
fatal:  The remote end hung up unexpectedly

В журнале ошибок сервера Apache есть:

fatal: Needed a single revision
fatal: Needed a single revision

Единственное, что я вижу в файле access.log:

192.168.10.96 - - [22/Oct/2010:23:06:06 +0100] "GET /repositories/CodeTest.git/info/refs?  service=git-receive-pack HTTP/1.1" 200 153

После этого момента я больше не могу заставить его нажимать, даже если я удаляю файл sln. Я новичок в GIT и довольно смущен тем, что может происходить здесь под капотом.

Любая помощь или совет будут великолепны.

РЕДАКТИРОВАТЬ , чтобы я мог создать текстовый файл и переименовать его в test.sln, и это работает. Но если я создам текстовый файл и скопирую содержимое файла sln, он снова потерпит неудачу.

РЕДАКТИРОВАТЬ 2 Похоже, что это не просто файлы SLN, а некоторые файлы в проекте / решении. У меня есть решение, в котором есть несколько проектов, поэтому я выбираю один проект, в котором было всего несколько файлов и нет SLN (имел proj-файл). Это также не удалось.

Я начинаю чувствовать, что это может быть проблема с кодировкой или прекращение строки с файлами, созданными VS2010, или что-то в этом роде. Не уверен, как это проверить.

РЕДАКТИРОВАТЬ 3 Похоже, это большие файлы, которые не могут быть нажаты. Я пробовал это на конфигурации клиента и сервера, но это не помогло.

РЕДАКТИРОВАТЬ 4 Если я сам все делаю на сервере, создаю новый репо, клонирую пустой репо, копирую все файлы в новый клон, git add и git commit, а затем git push it all работает. Это может указывать на проблему с сетью или временем ожидания. Я сделал клон http://user@localhost.

РЕДАКТИРОВАТЬ 5 Похоже, проблема в настройке моей сети. У меня есть один внешний IP-адрес, поэтому весь HTTP-трафик поступает в коробку Apache Linux, большая часть моего сайта обслуживается оттуда, но некоторые используют другие блоки, поэтому он использует обратную передачу прокси для обслуживания контента. У меня есть поддомен "git.myserver.com" для этого. Apache на GIT-сервере фактически находится на порте 8000, если я открою порт 8000 на внешнем брандмауэре и укажу его прямо на GIT-сервер, он работает. Так что я могу только предположить, что где-то на первом сервере Apache он умирает. просто для того, чтобы подтвердить фатальную ошибку почти мгновенно, поэтому время ожидания кажется менее вероятным. Может быть, обратный прокси-пароль переписывает что-то, но почему это влияет только на большие файлы - загадка.

РЕДАКТИРОВАТЬ 6 в прокси-сервере apache error.log получаю:

[Mon Oct 25 11:41:06 2010] [error] (103)Software caused connection abort: proxy: pass request body failed to 192.168.10.97:8000 (192.168.10.97)
[Mon Oct 25 11:41:06 2010] [error] proxy: pass request body failed to 192.168.10.97:8000 (192.168.10.97) from 62.133.24.54 ()

так что это похоже на то, что прокси-сервер сам не работает, или что-то на этом компьютере считает его плохим.

Спасибо

Ответы [ 2 ]

1 голос
/ 13 октября 2011

FWIW, у меня была такая же ошибка, но затем я обновился до git v1.7.7, и ошибка исчезла.

0 голосов
/ 23 октября 2010

почему вы просто не используете общий доступ к файлам? Вам не нужно перебирать http с помощью git.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...