[PATCH/v3] bundle.c: added --stdin option to git-bundle
- From
Adam Brewster <adambrewster@gmail.com>
- Date
- Jul 5, 2008, 16:30 UTC
- Message-ID
- <c376da900807050930i6d1da898s624be58adc6f1751@mail.gmail.com>
Signed-off-by: Adam Brewster <asb@bu.edu> --- It seems that the consensus is that the other half of my original patch is no good. You have some pretty good ideas about how to correctly address the problem I was trying to solve, and I look forward to seeing them actually implemented.
For now, I offer separately the modification I made to bundle.c to allow git-bundle to handle the --stdin option. There is no accompanying change to the documentation because it already implies that this option is available.
bundle.c | 22 ++++++++++++++++++++-- 1 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/bundle.c b/bundle.c index 0ba5df1..b44a4af 100644 --- a/bundle.c +++ b/bundle.c @@ -227,8 +227,26 @@ int create_bundle(struct bundle_header *header, const char *path, /* write references */ argc = setup_revisions(argc, argv, &revs, NULL); - if (argc > 1) - return error("unrecognized argument: %s'", argv[1]); + + for (i = 1; i < argc; i++) { + if ( !strcmp(argv[i], "--stdin") ) { + char line[1000]; + while (fgets(line, sizeof(line), stdin) != NULL) { + int len = strlen(line); + if (len && line[len - 1] == '\n') + line[--len] = '\0'; + if (!len) + break; + if (line[0] == '-') + die("options not supported in --stdin mode"); + if (handle_revision_arg(line, &revs, 0, 1)) + die("bad revision '%s'", line); + } + continue; + } + + return error("unrecognized argument: %s'", argv[i]); + } for (i = 0; i < revs.pending.nr; i++) { struct object_array_entry *e = revs.pending.objects + i; -- 1.5.5.1.211.g65ea3.dirty