Thread (4 messages) flat view 4 messages, 3 authors, 2016-06-15

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help