diff options
author | DongHun Kwak <dh0128.kwak@samsung.com> | 2021-03-03 15:14:41 +0900 |
---|---|---|
committer | DongHun Kwak <dh0128.kwak@samsung.com> | 2021-03-03 15:14:41 +0900 |
commit | 02b2b76bdf76318ba343a04d453f8ee14fc08517 (patch) | |
tree | 3b3a652f6f1213cfe59f52898d44ac6ec5dcb150 /builtin/send-pack.c | |
parent | 300071e7b6bd26add4bb9bbe6175f0759a47500c (diff) | |
download | git-02b2b76bdf76318ba343a04d453f8ee14fc08517.tar.gz git-02b2b76bdf76318ba343a04d453f8ee14fc08517.tar.bz2 git-02b2b76bdf76318ba343a04d453f8ee14fc08517.zip |
Imported Upstream version 2.1.2upstream/2.1.2
Diffstat (limited to 'builtin/send-pack.c')
-rw-r--r-- | builtin/send-pack.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/builtin/send-pack.c b/builtin/send-pack.c index f420b746..4b1bc0fe 100644 --- a/builtin/send-pack.c +++ b/builtin/send-pack.c @@ -110,6 +110,7 @@ int cmd_send_pack(int argc, const char **argv, const char *prefix) int flags; unsigned int reject_reasons; int progress = -1; + int from_stdin = 0; struct push_cas_option cas = {0}; argv++; @@ -169,6 +170,10 @@ int cmd_send_pack(int argc, const char **argv, const char *prefix) args.stateless_rpc = 1; continue; } + if (!strcmp(arg, "--stdin")) { + from_stdin = 1; + continue; + } if (!strcmp(arg, "--helper-status")) { helper_status = 1; continue; @@ -201,6 +206,28 @@ int cmd_send_pack(int argc, const char **argv, const char *prefix) } if (!dest) usage(send_pack_usage); + + if (from_stdin) { + struct argv_array all_refspecs = ARGV_ARRAY_INIT; + + for (i = 0; i < nr_refspecs; i++) + argv_array_push(&all_refspecs, refspecs[i]); + + if (args.stateless_rpc) { + const char *buf; + while ((buf = packet_read_line(0, NULL))) + argv_array_push(&all_refspecs, buf); + } else { + struct strbuf line = STRBUF_INIT; + while (strbuf_getline(&line, stdin, '\n') != EOF) + argv_array_push(&all_refspecs, line.buf); + strbuf_release(&line); + } + + refspecs = all_refspecs.argv; + nr_refspecs = all_refspecs.argc; + } + /* * --all and --mirror are incompatible; neither makes sense * with any refspecs. |