Re: [PATCH] Introduce a filter-path argument to git-daemon, for doing custom path transformations
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:46:23
Johan Sørensen [off-list ref] writes:
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.)
quoted
(by the way, "filter path" sounds as if it checks and conditionally denies access to, or something like that, which is not what you are using it for. It is more about rewriting paths, a la mod_rewrite, and I think the option is misnamed)Maybe --rewrite-script or --rewrite-command instead?
Perhaps.