В ходе некоторых поисков я обнаружил два немного разных подхода к обслуживанию репозитория git через http.
В первый использует только DAV. В второй использует DAV и git-http-backend.
Есть ли разница между вышеуказанными подходами?
Да, первый метод очень неэффективен, поэтому был создан второй метод. При использовании старого «немого» транспортного метода git не может запрашивать определенные объекты с сервера, он может только узнать, какой файл пакета содержит нужный объект, и загрузить весь packfile.
Старый «тупой» транспорт также никогда не предназначался для отправки изменений на сервер. Это было возможно, но никто не использовал его, и все знали, что это плохо, поэтому разработчики никогда не уделяли ему особого внимания.
Также, если вы еще раз изучите Справочная страница git-http-backend что вы связали, вы заметите, что он не использует DAV. Примеры создают обратно совместимую настройку, так что старые клиенты git все еще могут иметь доступ для чтения, но только новые клиенты будут иметь доступ на запись. Я не знаю, можно ли настроить его так, чтобы git-http-backend и DAV использовались вместе, чтобы новые и старые клиенты могли иметь доступ для записи, но я бы даже не рекомендовал пытаться это сделать.
Реальность такова, что использование старого «тупого» метода должно прекратиться и быть заменено «умным» методом везде, где это возможно.
Для лучшего объяснения различий между «тупым» и «умным» методами транспорта прочтите эту отличную страницу (с картинками!) От автора книги ProGit.