Re: [PATCH] Introduce a filter-path argument to git-daemon, for doing custom path transformations
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Mar 19, 2009, 00:15 UTC
- Message-ID
- <alpine.DEB.1.00.0903190107001.10279@pacific.mpi-cbg.de>
- In-Reply-To
- <7vprgkarq5.fsf@gitster.siamese.dyndns.org>
Hi,
On Sat, 14 Mar 2009, Junio C Hamano wrote:
Show 40 quoted lines
> Johan Sørensen <johan@johansorensen.com> 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