From: Elijah Newren <newren@xxxxxxxxx> Commit c0582c53bcf4e83bba70e1ad23abbad31f96ebc8 introduced logic to just omit tags that point to tree objects. However, a case was missed resulting in a tag being output which pointed at "mark :0", which would cause fast-import to crash. Signed-off-by: Elijah Newren <newren@xxxxxxxxx> --- Includes changes suggested by Stephen Boyd (squashing commits together and moving the NEEDSWORK comment to where it is still relevant) and Johannes Sixt (fixing the testcase to remain in the right directory even if git init fails and to catch failures in git fast-export). builtin-fast-export.c | 8 +++++++- t/t9301-fast-export.sh | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/builtin-fast-export.c b/builtin-fast-export.c index 6cef810..891e2d4 100644 --- a/builtin-fast-export.c +++ b/builtin-fast-export.c @@ -407,9 +407,15 @@ static void handle_tags_and_duplicates(struct string_list *extra_refs) for (i = extra_refs->nr - 1; i >= 0; i--) { const char *name = extra_refs->items[i].string; struct object *object = extra_refs->items[i].util; + struct tag *tag; switch (object->type) { case OBJ_TAG: - handle_tag(name, (struct tag *)object); + tag = (struct tag *)object; + if (tag->tagged->type == OBJ_TREE) { + /* Ignore this tag altogether */ + return; + } + handle_tag(name, tag); break; case OBJ_COMMIT: /* create refs pointing to already seen commits */ diff --git a/t/t9301-fast-export.sh b/t/t9301-fast-export.sh index 8c8a9e6..3f13e6b 100755 --- a/t/t9301-fast-export.sh +++ b/t/t9301-fast-export.sh @@ -271,8 +271,14 @@ test_expect_success 'set-up a few more tags for tag export tests' ' git tag -a tag-obj_tag-obj -m "tagging a tag" tree_tag-obj ' +test_expect_success 'tree_tag' ' + mkdir result && + (cd result && git init) && + git fast-export tree_tag > fe-stream && + (cd result && git fast-import < ../fe-stream) +' + # NEEDSWORK: not just check return status, but validate the output -test_expect_success 'tree_tag' 'git fast-export tree_tag' test_expect_success 'tree_tag-obj' 'git fast-export tree_tag-obj' test_expect_success 'tag-obj_tag' 'git fast-export tag-obj_tag' test_expect_success 'tag-obj_tag-obj' 'git fast-export tag-obj_tag-obj' -- 1.6.0.6 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html