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
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html