git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: newren@gmail.com
To: git@vger.kernel.org
Cc: Johannes.Schindelin@gmx.de, kusmabite@gmail.com,
	Elijah Newren <newren@gmail.com>
Subject: [PATCH v2] fast-export: Omit tags that tag trees
Date: Mon, 22 Jun 2009 07:06:36 -0600	[thread overview]
Message-ID: <1245676001-14734-2-git-send-email-newren@gmail.com> (raw)
In-Reply-To: <1245676001-14734-1-git-send-email-newren@gmail.com>

From: Elijah Newren <newren@gmail.com>

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@gmail.com>
---
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

  reply	other threads:[~2009-06-22 13:08 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-22 13:06 A few fast export fixups -- round 2 newren
2009-06-22 13:06 ` newren [this message]
2009-06-22 18:33   ` [PATCH v2] fast-export: Omit tags that tag trees Junio C Hamano
2009-06-22 13:06 ` [PATCH v2] fast-export: Make sure we show actual ref names instead of "(null)" newren
2009-06-22 18:34   ` Junio C Hamano
2009-06-22 13:06 ` [PATCH v2] fast-export: Do parent rewriting to avoid dropping relevant commits newren
2009-06-22 13:06 ` [PATCH v2] fast-export: Add a --tag-of-filtered-object option for newly dangling tags newren
2009-06-22 18:34   ` Junio C Hamano
2009-06-26  4:45     ` Elijah Newren
2009-06-22 13:06 ` [PATCH v2] Add new fast-export testcases newren
2009-06-22 13:06 ` [PATCH v2] fast-export: Document the fact that git-rev-list arguments are accepted newren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1245676001-14734-2-git-send-email-newren@gmail.com \
    --to=newren@gmail.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=kusmabite@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).