Re: [PATCH] Introduce a filter-path argument to git-daemon, for doing custom path transformations
From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:46:25
Hi, On Sat, 14 Mar 2009, Junio C Hamano wrote:
Johan Sørensen [off-list ref] writes:quoted
quoted
Do you run git-daemon from inetd, or standalone, by the way?Standalone.quoted
I am wondering how well it would scale if you spawn an external "filter path" script every time you get a request.A quick test of 250 consecutive requests with ls-remote to localhost (all without the --verbose flag), slowest run: - Baseline (no --filter-path agument): 3.39s $ cat filter.c #import "stdio.h" int main (int argc, char const *argv[]) { printf("%s", "/existing.git\0"); return 0; } - 3.84s $ cat filter.rb #!/usr/bin/ruby print "/existing.git\0" - 4.76s So, obviously highly dependent on how long it takes the script to launch and how much work it does. And yes, neither of the above really does anything :) nor takes any increased cpu load into account Another approach is to keep the external script running and feed it on stdin, but that would involve a bit more micro-management of the external process. I will revisit that idea if I find out that's needed.I actually was hoping (especially we have Dscho on Cc: list) that somebody like you would start suggesting a "plug in" approach to load .so files, which would lead to a easy-to-port dso support with the help from msysgit folks we can use later in other parts of the system (e.g. customizable filters used for diff textconv, clean/smudge, etc.)
I do not like that at all. Dynamic libraries -- especially on Windows -- are a major hassle. However, I cannot think of anything Johan might want to do that would not be possible using a bunch of regular expressions together with substitions. FWIW I have experimental code in my personal tree that sports strbuf_regsub(), a function to replace matches of a regular expression (possibly with groups) by a given string (which may contain \0 .. \9, being replaced with the respective group's contents). Ciao, Dscho