mecker. mecker. mecker.

lighttpd + git/grack = HTTP 417

Just in case, anyone ex­pe­ri­ences this, too. Lighttpd can not handle Expect: 100-continue properly. Pushing with git fails (sometimes) with something like this:

# git push origin master
    Counting objects: 11, done.
    Delta compression using up to 24 threads.
    Compressing objects: 100% (10/10), done.
    Writing objects: 100% (11/11), 1.94 KiB, done.
    Total 11 (delta 0), reused 0 (delta 0)
    error: RPC failed; result=22, HTTP code = 417
    fatal: The remote end hung up unexpectedly
    fatal: The remote end hung 
weit­er­lesen.

Grack + Redmine Auth = Git Smart HTTP++

So, nach gut zwei Wochen weiterem Probieren und Failen habe ich nun auch eine richtige Au­then­ti­fi­zie­rung für non-Apache Webserver mittels Redmine. Ich nutze hierbei das neue Smart HTTP Transport Protokoll, das seit Git 1.6.6 un­ter­stützt wird. Über SSL getunnelt ist es fast so sicher und genauso schnell wie die Über­tra­gung über SSH oder Git-Daemon. Nur halt mittels plain HTTP, Webserver und etwas mod_proxy.

Weil schon die In­stal­la­ti­on abseits von Apache/Nginx eine Qual wegen nicht vor­han­de­ner Do­ku­men­ta­ti­on war, will ich auch hier wieder do­ku­men­tie­ren, indem ich mein Setup als Beispiel angebe. Wie immer nutze ich lighttpd und eine Redmine-In­stal­la­ti­on Version 1.2.1, betrieben mit thin. Weil Hype cool ist, existieren Wrapper für wei­ter­le­sen.