У меня есть только настройка 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 ()
так что это похоже на то, что прокси-сервер сам не работает, или что-то на этом компьютере считает его плохим.
Спасибо