[PATCH 3/4] fast-import: add option command
- From
Sverre Rabbelier <srabbelier@gmail.com>
- Date
- Aug 13, 2009, 05:09 UTC
- Message-ID
- <1250140186-12363-4-git-send-email-srabbelier@gmail.com>
- In-Reply-To
- <1250140186-12363-3-git-send-email-srabbelier@gmail.com>
This allows the frontend to specify any of the supported options as long as no non-option command has been given. This way the user does not have to include any frontend-specific options, but instead she can rely on the frontend to tell fast-import what it needs. ---
This is a lot simpler from the previous version as we can now
reuse parse_one_option from 1/4.fast-import.c | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/fast-import.c b/fast-import.c index 17d57ab..2ec804d 100644 --- a/fast-import.c +++ b/fast-import.c @@ -348,6 +348,7 @@ static struct recent_command *rc_free; static unsigned int cmd_save = 100; static uintmax_t next_mark; static struct strbuf new_data = STRBUF_INIT; +static int seen_non_option_command; static void write_branch_report(FILE *rpt, struct branch *b) { @@ -1663,6 +1664,10 @@ static int read_next_command(void) if (stdin_eof) return EOF; + if (!seen_non_option_command + && prefixcmp(command_buf.buf, "option ")) + seen_non_option_command = 1; + rc = rc_free; if (rc) rc_free = rc->next; @@ -2460,6 +2465,16 @@ static void parse_one_option(const char *option) } } +static void parse_option(void) +{ + char* option = command_buf.buf + 7; + + if (seen_non_option_command) + die("Got option command '%s' after non-option command", option); + + parse_one_option(option); +} + static int git_pack_config(const char *k, const char *v, void *cb) { if (!strcmp(k, "pack.depth")) { @@ -2534,6 +2549,8 @@ int main(int argc, const char **argv) parse_checkpoint(); else if (!prefixcmp(command_buf.buf, "progress ")) parse_progress(); + else if (!prefixcmp(command_buf.buf, "option ")) + parse_option(); else die("Unsupported command: %s", command_buf.buf); }
-- 1.6.4.16.g72c66.dirty