Hi, On Sat, 14 Mar 2009, Junio C Hamano wrote: > Johan Sørensen <johan@xxxxxxxxxxxxxxxxx> writes: > > >> Do you run git-daemon from inetd, or standalone, by the way? > > > > Standalone. > > > >> 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