From 88fbf67b78c7bbe6c94150e7cd05f9398b571c48 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Fri, 19 Dec 2008 14:41:21 -0800 Subject: [PATCH] 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 Acked-by: Shawn O. Pearce --- fast-import.c | 26 +++++++++++++++----------- t/t9300-fast-import.sh | 18 ++++++++++++++++++ 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/fast-import.c b/fast-import.c index 13b36147a..d58cca58e 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); diff --git a/t/t9300-fast-import.sh b/t/t9300-fast-import.sh index dba3a1b48..8b79de5b6 100755 --- a/t/t9300-fast-import.sh +++ b/t/t9300-fast-import.sh @@ -56,6 +56,12 @@ M 644 :2 file2 M 644 :3 file3 M 755 :4 file4 +tag series-A +from :5 +data <actual && test_cmp expect actual' +cat >expect <actual && + test_cmp expect actual +' + cat >expect <