[RFC 1/2] Add backdoor options to receive-pack for use in Git-aware CGI
- From
Shawn O. Pearce <spearce@spearce.org>
- Date
- Aug 3, 2008, 07:25 UTC
- Message-ID
- <1217748317-70096-1-git-send-email-spearce@spearce.org>
- In-Reply-To
- <20080803025602.GB27465@spearce.org>
The new --report-status flag forces the status report feature of the push protocol to be enabled. This can be useful in a CGI program that implements the server side of a "smart" Git-aware HTTP transport. The CGI code can perform the selection of the feature and ask receive-pack to enable it automatically.
The new --no-advertise-heads causes receive-pack to bypass its usual display of known refs to the client, and instead immediately start reading the commands and pack from stdin. This is useful in a CGI situation where we want to hand off all input to receive-pack.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org> --- receive-pack.c | 19 ++++++++++++++----- 1 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/receive-pack.c b/receive-pack.c index d44c19e..512eae6 100644 --- a/receive-pack.c +++ b/receive-pack.c @@ -464,6 +464,7 @@ static int delete_only(struct command *cmd) int main(int argc, char **argv) { + int advertise_heads = 1; int i; char *dir = NULL; @@ -472,7 +473,15 @@ int main(int argc, char **argv) char *arg = *argv++; if (*arg == '-') { - /* Do flag handling here */ + if (!strcmp(arg, "--report-status")) { + report_status = 1; + continue; + } + if (!strcmp(arg, "--no-advertise-heads")) { + advertise_heads = 0; + continue; + } + usage(receive_pack_usage); } if (dir) @@ -497,10 +506,10 @@ int main(int argc, char **argv) else if (0 <= receive_unpack_limit) unpack_limit = receive_unpack_limit; - write_head_info(); - - /* EOF */ - packet_flush(1); + if (advertise_heads) { + write_head_info(); + packet_flush(1); + } read_head_info(); if (commands) {
-- 1.6.0.rc1.221.g9ae23