diff options
author | Junio C Hamano <gitster@pobox.com> | 2008-12-19 14:41:21 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-12-19 19:25:06 -0800 |
commit | 88fbf67b78c7bbe6c94150e7cd05f9398b571c48 (patch) | |
tree | 6ac233c4cb1a6f3a7f49a8a246767f43f7a36299 /fast-import.c | |
parent | 4e46a8d62c551e11e21bd04e059e9ae3cdcfd029 (diff) | |
download | git-88fbf67b78c7bbe6c94150e7cd05f9398b571c48.tar.gz |
fast-import: make tagger information optional
Even though newer Porcelain tools always record the tagger information
when creating new tags, export/import pair should be able to faithfully
reproduce ancient tag objects that lack tagger information.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Diffstat (limited to 'fast-import.c')
-rw-r--r-- | fast-import.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/fast-import.c b/fast-import.c index 13b36147a4..d58cca58e5 100644 --- a/fast-import.c +++ b/fast-import.c @@ -43,7 +43,7 @@ Format of STDIN stream: new_tag ::= 'tag' sp tag_str lf 'from' sp (ref_str | hexsha1 | sha1exp_str | idnum) lf - 'tagger' sp name '<' email '>' when lf + ('tagger' sp name '<' email '>' when lf)? tag_msg; tag_msg ::= data; @@ -2264,23 +2264,27 @@ static void parse_new_tag(void) read_next_command(); /* tagger ... */ - if (prefixcmp(command_buf.buf, "tagger ")) - die("Expected tagger command, got %s", command_buf.buf); - tagger = parse_ident(command_buf.buf + 7); + if (!prefixcmp(command_buf.buf, "tagger ")) { + tagger = parse_ident(command_buf.buf + 7); + read_next_command(); + } else + tagger = NULL; /* tag payload/message */ - read_next_command(); parse_data(&msg); /* build the tag object */ strbuf_reset(&new_data); + strbuf_addf(&new_data, - "object %s\n" - "type %s\n" - "tag %s\n" - "tagger %s\n" - "\n", - sha1_to_hex(sha1), commit_type, t->name, tagger); + "object %s\n" + "type %s\n" + "tag %s\n", + sha1_to_hex(sha1), commit_type, t->name); + if (tagger) + strbuf_addf(&new_data, + "tagger %s\n", tagger); + strbuf_addch(&new_data, '\n'); strbuf_addbuf(&new_data, &msg); free(tagger); |